六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

ADO.NET:通向未來之橋

[摘要]在Web跨入編程時代之前,對于大多數IT管理者和顧問來說,數據訪問只是一個相對而言的問題;所有要用到的數據都必須自己準備好。人們主要關心的問題是選擇性能/價格比最好的數據庫服務器,系統涉及的所有模塊必須和服務器兼容。客戶機/服務器應用是這種兩層模型最典型的范例。 隨著Web交互性的日益提高...
    在Web跨入編程時代之前,對于大多數IT管理者和顧問來說,數據訪問只是一個相對而言的問題;所有要用到的數據都必須自己準備好。人們主要關心的問題是選擇性能/價格比最好的數據庫服務器,系統涉及的所有模塊必須和服務器兼容。客戶機/服務器應用是這種兩層模型最典型的范例。

    隨著Web交互性的日益提高和應用的日益廣泛,對于第三層——中間層的需求也越來越突出。中間層是一個邏輯層,數據訪問組件通常就在這一層上。數據訪問組件是唯一有必要了解數據庫細節的代碼,同時,準備更換或者升級數據庫服務器時,數據訪問組件也是第一個需要修改的地方。

    接下來,三層系統模型發展成了Windows DNA——現在稱為Microsoft .NET服務器系統。Microsoft利用一個統一的模型進行數據訪問。這個模型注重的是內容,而不是數據格式和存儲媒介。它的具體表達方式建立在UDA(Universal Data Access,通用數據訪問)的基礎之上,而UDA正是激勵OLE DB體系發展的深層理念。為了提供一種通過VB和ASP COM組件方便地、無縫地訪問OLE DB功能的途徑,Microsoft設計了ADO。ADO 2.0是用來支持OLE DB的第一個版本。在幾年之內,ADO發展到了2.6版本,增加和擴展了XML支持,使得經過擴展的ADO對象模型能夠匹配所有OLE DB改進功能(例如,對于OLE DB新增的Row和Stream對象,ADO 2.5提供了類似的ADO配套功能)。

    ADO 2.0的核心功能超越了OLE DB。在多層系統中,隨著中間層組件的出現,如何為表現層提供最新數據這一問題也隨之出現。表現層怎樣訪問數據?連接怎樣打開?或者,我們是否應該維護一份脫機記錄(即,一些斷開連接之后仍舊能夠在表現層使用的數據庫記錄)?ADO 2.0以及它的更高版本同時提供了對服務器端游標和脫機記錄集的支持(脫機記錄集是一種COM對象,它可以跨越網絡串行化,客戶可以下載它然后脫機使用)。 

    服務器端游標代表著一個緊密結合的、保持連接的環境,在這個環境中我們總是維持著各個層之間的有效通道,只有結束時才拆除連接。與此相反,脫機記錄集是一個有狀態的對象,我們可以把它作為一個整體處理,且不必維持連接。脫機記錄集使用客戶端的靜態游標,能夠提供一個數據源的快照。對于那些只有讀取要求、且需要在各個系統層之間移動數據的應用程序來說,脫機記錄集是很理想的。今天,大多數Web應用程序要求在各個層之間傳輸數據。為了獲取這些數據,我們經常使用快速的“只能向前”游標,用XML編碼數據,然后通過網絡發送數據,避免了在Web服務器上維持會話狀態信息。在分布式環境中,數據庫連接是一種關鍵性的資源,以脫機方式工作保證了高可伸縮性。

    然而,Web是一把雙刃劍。Web讓我們連接到任何類型的聯機服務,而且能夠與它們進行交互。但是,Web也要求一定程度的互操作性,因為操作所涉及的各個服務可能運行在不同的軟件和硬件平臺上。我們可以通過利用開放的標準,以及那些不注重私有權的技術——甚至是象COM+這類廣泛應用的私有技術,跨越不同的平臺。

    今天,基于Windows的Web數據訪問應用程序利用了ADO豐富的、方便的編程接口。然而,ADO對象天生地定位在Windows平臺上。ADO基于COM的本性使得記錄集很難在一個分布式、異種平臺構成的環境中使用。另外,即使目標平臺可能允許我們使用ADO記錄集,它也不具備最有效的機制。ADO.NET的DataSet和DataReader更有效;而且,如果沒有ADO.NET,有些時候我們還可以借助XML或純文本獲得高效率。

    為了在Web環境下傳輸數據,Microsoft對ADO記錄集進行了優化。但COM類型轉換仍舊是一個必不可少的步驟,因為COM的數據類型不可能總是匹配ADO記錄集的數據類型(例如,String類型必須轉換成BSTR類型)。由此,許多人把XML當成了粘合各個層的“萬能膠水”——不管涉及到了哪些平臺。通常的做法是:先提取一個記錄集,把它保存為XML格式,然后傳輸結果數據流,讓接收者從這個XML數據流重新構造出記錄集供以后使用。隨著對協同工作能力和可伸縮性要求的提高,ADO不再是最理想的答案,因為它不是建立在XML的基礎上——但ADO.NET是。

二、ADO在Web環境中的不足

    .NET框架創立了一種取代COM和COM+的新組件模型。.NET的提出是Microsoft成熟的組件技術的新戰略。雖然幾個關鍵性的COM特色不再在.NET中出現,但在某些方面,.NET與COM編程仍舊很相似。因此,COM程序員將能夠方便地轉向.NET開發。ADO.NET是Microsoft特別為.NET框架設計的數據訪問層,它在很大程度上利用了.NET的優勢。

    為什么.NET必須用一個新的數據訪問層來替代現有的、廣泛應用的數據訪問接口,比如ADO?現代Web應用系統必須具備客戶機/服務器應用和桌面應用的交互能力,Microsoft設計.NET的目標正是為了迎接設計現代Web應用系統的挑戰。同時,.NET也利用了各種Web協議廣泛的、強大的連接能力和協同操作能力。

    在非Windows平臺上,ADO記錄集不能直接使用,從而使得協同操作能力受到了限制。為了突破這個限制,我們要把記錄集轉換成XML格式,然后傳輸轉換得到的XML記錄集。在ADO.NET中,把數據轉換成XML以及通過網絡傳輸的操作得到了簡化和優化。另外,ADO對象模型中的每一個地方都體現了以數據庫為中心的思想。ADO把數據看成是一組來自數據源的記錄,而不是把數據看成一些獨立的信息。在ADO中,如果脫離了數據提供者用來保存和描述數據的結構,數據將不能獨立存在。

三、ADO.NET數據集和ADO記錄集

    ADO.NET是從Web的角度對ADO進行檢討和改進。Microsoft對ADO.NET的設計嚴格地體現了其名字的含義:ADO,再加上.NET。ADO.NET自動連接網絡,致力于讓Web數據訪問變得更加簡單和高效。兩個功能使得這方面的增強成為可能:脫機記錄集,以及與生俱來的對XML的支持。由于采用了脫機記錄集方案,ADO.NET自然也就不再支持服務器端游標。ADO.NET天生就把記錄數據保存為XML文檔,把模式(Schema)和數據視為分離的、可替換的元素。

    如果你認為ADO早就提供了這些功能,它們并沒有什么創新意義,那么,ADO.NET還提供了其他許多新的功能。ADO.NET能夠使用連接的或者非連接的(脫機的)記錄集,具體由用戶選擇的游標類型和游標位置決定。ADO記錄集的本地存儲格式是ADTG文件格式(Advanced Data TableGram,高級數據表圖)。ADTG是一種Microsoft私有的二進制存儲模式,代表著記錄集在內存中的映像。XML是可替換使用的、確定的、詳細輸出格式。在ADO.NET中,我們可以斷開一個記錄集集合的連接,通過一個默認(但允許更改)的XML模式再現記錄集集合。

    在ADO.NET對象模型中,DataSet(數據集)是最重要的對象。一般地,一個DataSet對象就是一個記錄集的集合。ADO.NET框架提供了記錄集的所有數據庫功能:排序,分頁,過濾視圖,關系,索引,和主鍵。

    DataSet對象代表了一個在內存中的、有著豐富功能的數據緩沖區。DataSet對象也通過表組織數據,這些表與原始的數據源之間不存在連接。我們可以添加表,表可以通過讀取本地或遠程XML文件獲得,或者也可以從任何可訪問的系統資源(包括內存和其他附屬設備在內)讀取。我們可以排序、索引、過濾數據表,象處理ADO的Recordset一樣導航數據表。

    我們可以通過命令用數據集合填充DataSet對象。如果用.NET集合的形式為DataSet對象提供數據表(具有集合功能的.NET數據類型是ICollection),同一個DataSet對象能夠服務來自多個連接的多個請求。ADO.NET的DataSet對象比ADO的Recordset更一般化;與ADO的Recordset不同,它是對數據源的一種抽象。然而,DataSet對象保留了一個在內存中工作的數據存儲器;它沒有完全淘汰記錄集功能。如果我們只需要一次性地滾動記錄集,然后生成某種輸出,那么,我們應該使用DataReader對象。.NET的DataReader對象類似于“只能向前、只讀”的記錄集,但它是一個高度專用化的對象,所以無論在體積和開銷上它都要比記錄集小。事實上,記錄集能夠執行許多不同的任務,是一個相當臃腫的對象。與ADO的Recordset相比,DataReader不包含進行“家務管理”的代碼,除了實現功能所必需的代碼之外,它不包含任何其他代碼。

    把多個表作為一個整體管理以及允許建立這些表之間的關系,這是ADO.NET的新功能。我們可以用XML形式持久化或傳輸任何DataSet對象,而且無需付出任何額外的代價,因為DataSet對象本身就是按照XML格式構造。因此,除非要修改底層模式,否則,我們無需為了獲得一個XML流而去轉換DataSet對象的任意一個部分。

[1] [2] [3]  下一頁




主站蜘蛛池模板: 青草视频网站在线观看 | 伊人影院在线视频 | 日韩久久综合 | 青青青国产免费手机视频在线观看 | 亚洲福利视频一区二区三区 | 午夜性伦鲁啊鲁免费视频 | 日本高清在线播放一区二区三区 | 中文字幕福利片 | 日比免费视频 | 色综合天天综合 | 手机看片日韩国产一区二区 | 欧美性受xxxx黑人xyx性爽 | 欧美一级淫片免费播放口 | 啪啪大秀 | 日韩在线视频网址 | 曰本不卡视频 | 日韩精品国产自在欧美 | 婷婷狠狠操 | 午夜国产精品福利在线观看 | 最近新免费韩国视频资源 | 天天干天天干 | 四虎影院视频在线观看 | 亚洲资源在线 | 亚洲成人高清在线 | 天天做天天爰夜夜爽 | 午夜视频入口 | 在线观看亚洲免费视频 | 四虎影院永久在线观看 | 天天av天天翘天天综合网 | 日韩小视频在线播放 | 视频午夜 | 色姣姣狠狠撩综合网 | 亚洲日本免费 | 亚洲视频www | 伊人久久大线蕉香港三级 | 手机福利视频一区二区 | 欧洲亚洲综合一区二区三区 | 欧美一级高清片欧美国产欧美 | 色 在线播放 | 午夜一级精品免费毛片 | 欧美特黄一级片 |