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的多種弊端,取而代之是微軟技術發展的趨勢。
ADO架構圖表
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編排導致的數據類型轉換,從而提高了整體性能。
下面就是以圖表的形式描繪了ADO.NET體系
ADO.NET架構圖表
4. 小結
ADO.NET為.NET構架提供了優化的數據訪問模型,和基於COM的ADO是完全兩樣的數據訪問方式。