ADO和ADO.NET的區別
1. ADO與ADO.NET簡介
ADO與ADO.NET既有相似也有區別,他們都能夠編寫對資料庫伺服器中的資料進行訪問和操作的應用程式,並且便於使用、高速度、低記憶體支出和佔用磁碟空間較少,支援用於建立基於用戶端/伺服器和 Web 的應用程式的主要功能。但是ADO使用OLE DB介面並基於微軟的COM技術,而ADO.NET擁有自己的ADO.NET介面並且基於微軟的.NET體系架構。眾所周知.NET體系不同於COM體系,ADO.NET介面也就完全不同於ADO和OLE DB介面,這也就是說ADO.NET和ADO是兩種資料訪問方式。
2. 資料訪問方式的曆史
下面簡單的回顧一下微軟的資料訪問方式所走過的幾個階段。
ODBC – (Open Database Connectivity)是第一個使用SQL訪問不同關聯式資料庫的資料訪問技術。使用ODBC應用程式能夠通過單一的命令操縱不同的資料庫,而開發人員需要做的僅僅只是針對不同的應用加入相應的ODBC驅動。
DAO - (Data Access Objects)不像ODBC那樣是面向C/C++程式員的,它是微軟提供給Visual Basic開發人員的一種簡單的資料存取方法,用於操縱Access資料庫。
RDO – 在使用DAO訪問不同的關係型資料庫的時候,Jet引擎不得不在DAO和ODBC之間進行命令的轉化,導致了效能的下降,而RDO(Remote Data Objects)的出現就順理成章了。
OLE DB – 隨著越來越多的資料以非關係型格式儲存,需要一種新的架構來提供這種應用和資料來源之間的無縫串連,基於COM(Component Object Model)的OLE DB應運而生了。
ADO – 基於OLE DB之上的ADO更簡單、更進階、更適合Visual Basic程式員,同時消除了OLE DB的多種弊端,取而代之是微軟技術發展的趨勢。
3. ADO與ADO.NET對照
在開始設計.NET體系架構時,微軟就決定重新設計資料訪問模型,以便能夠完全的基於XML和離線計算模型。兩者的區別主要有:
ADO以Recordset儲存,而ADO.NET則以DataSet表示。Recordset看起來更像單表,如果讓Recordset以多表的方式表示就必須在SQL中進行多表串連。反之,DataSet可以是多個表的集合。ADO 的運作是一種線上方式,這意味著不論是瀏覽或更新資料都必須是即時的。ADO.NET則使用離線方式,在訪問資料的時候ADO.NET會利用XML製作資料的一份幅本,ADO.NET的資料庫連接也只有在這段時間需要線上。
由於ADO使用COM技術,這就要求所使用的資料類型必須符合COM規範,而ADO.NET基於XML格式,資料類型更為豐富並且不需要再做COM編排導致的資料類型轉換,從而提高了整體效能。
4. 小結
ADO.NET為.NET構架提供了最佳化的資料訪問模型,和基於COM的ADO是完全兩樣的資料訪問方式。
ado.net與ado存在著比較大的差異:
1.ado.net遵循更通用的原則,不那麼專門面向資料庫。ado.net集合了所有允許資料處理的類。這些類表示具有典型資料庫功能(如索引,排序和視圖)的資料容器物件。儘管ado.net是.net資料庫應用程式的權威解決方案,但從總體設計上看,它不像ado資料模型那樣以資料庫為中心,這是ado.net的一大特點。
2.目前,ado.net提供了兩種資料庫訪問類庫:一種用於sql server 7.0 或更高版本,另一種用於其他所有您可能已經安裝的ole db提供者。在這兩種情況下,您分別使用不同的類,但遵循相似的命名規則。除首碼,名稱都是相同的。前一種情況首碼為sql,後一種情況則是oledb。同時,.net架構還提供了odbc .net的資料訪問模式。odbc .net data provider是 .net 架構的增強組件,它可以訪問原始的 odbc 驅動程式,就像 ole db .net data provider 可以訪問原始的 ole db providers 一樣。目前它僅在下列驅動程式中測試過:microsoft sql odbc driver,microsoft odbc driver for oracle,microsoft jet odbc driver。
3.ado.net提供了兩個隊形來處理從資料來源中抽取資料,它們是dataset和datareader對象。前者是記錄在記憶體中的緩衝,您可以從任何方向隨意訪問和修改。後者是高度最佳化的對象,專為以僅向前方式滾動唯讀記錄而設計。
4.ado.net統一了資料容器類編程介面,無論您打算編寫何種應用程式,windows表單,web表單還是web服務,都可以通過同一組類來處理資料。不管在後端的資料來源數sql server資料庫,ole db,xml檔案還是一個數組,您都可以通過相同的方法和屬性來滾動和處理它們的內容。
5.在ado中,xml只不過是輸入和輸出格式。然而在ado.net中,xml是一種資料格式,提供了操作,組織,共用和傳遞資料的手段。