淺談ADO.NET與ADO!!

來源:互聯網
上載者:User
ado 最近老是看到有網友問關於ADO.NET和ADO的區別和好壞問題,想想自己在剛接觸.NET時確實也有此疑問,現將我的一點理解和體會寫來,希望能對大家有點協助! 其實大部分東西還是來自MSDN!! ADO 對於用機器碼編寫的應用程式,ADO 為 OLE DB 資料提供者提供基於 COM 的應用程式層級介面。與 ADO.NET 相似,ADO 支援各種開發需要,包括使用與關聯式資料庫和其他儲存區中的資料的活串連來建立前端資料庫用戶端和中介層業務對象。而且,像 ADO.NET一樣,ADO可構建用戶端記錄集、使用松耦合記錄集、處理 OLE DB 的資料整形行集合。
ADO還支援一些不通過 ADO.NET公開的行為,如可滾動的伺服器端遊標。然而,因為伺服器端遊標需要儲存資料庫資源,所以使用它們可能會對應用程式的效能和可縮放性產生極大的負面影響。為了通過防火牆傳輸 ADO 記錄集,您需要配置防火牆以啟用 COM 封送請求,並考慮相關的安全後果。COM封送處理還將資料類型限制為COM標準定義的那些資料類型。可選擇以 XML格式保持 ADO 記錄集並傳輸 XML 常值。 ADO.NET 是重要的應用程式級介面,用於在 Microsoft .NET 平台中提供資料訪問服務。在 ADO.NET中,可以使用新的 .NET Framework 資料提供者來訪問資料來源。這些資料提供者包括:
SQL Server .NET Framework 資料提供者。 OLE DB .NET Framework 資料提供者。 ODBC .NET Framework 資料提供者。 Oracle .NET Framework 資料提供者。 這些資料提供者可以滿足各種開發要求,包括中介層業務對象(它們使用與關聯式資料庫和其他儲存區中的資料的活動串連)。
ADO.NET 是專為基於訊息的 Web應用程式而設計的,同時還能為其他應用程式結構提供較好的功能。通過支援對資料的松耦合訪問,ADO.NET 減少了與資料庫的活動串連數目(即減少了多個使用者爭用資料庫伺服器上的有限資源的可能性),從而實現了最大程度的資料共用。
ADO.NET 提供幾種資料存取方法。在有些情況下,Web 應用程式或 XML Web services 需要訪問多個源中的資料,或者需要與其他應用程式(包括本地和遠程應用程式)進行互操作,或者可受益於保持和傳輸緩衝結果,這時使用資料集將是一個明智的選擇。作為一種替換方法,ADO.NET 提供資料命令和資料讀取器以便與資料來源直接通訊。使用資料命令和資料讀取器直接進行的資料庫操作包括:執行查詢和預存程序、建立資料庫物件、使用 DDL 命令直接更新和刪除。
ADO.NET 還通過對分布式 ADO.NET 應用程式的基本對象“資料集”(Dataset) 支援基於 XML 的持久性和傳輸格式,來實現最大程度的資料共用。資料集是一種關係資料結構,可使用 XML進行讀取、寫入或序列化。ADO.NET 資料集使得產生要求應用程式層與多個 Web網站之間進行松耦合資料交換的應用程式變得很方便。
因為資料集被遠端為 XML 形式,所以任何兩個組件都可共用資料並使用 XML 結構描述來定義資料集的關係結構。而且,因為資料集的序列化格式是XML,所以DataSet對象可輕鬆穿過防火牆,而不受任何限制。除了從XML載入資料以外,資料集還可用SQL Server中的資料以及通過 OLE DB公開的資料來源中的資料來填充,並可儲存對這些資料的更改。
資料集的一個主要特性是可用兩種方式訪問和操作本機資料集內的資料:
作為關聯式資料庫中的表----資料集可以包含一個表或表的集合。資料集的一個重要特徵是,它會跟蹤其所包含的表之間的關係,就好像它是記憶體中的關係資料存放區區。 作為 XML(可延伸標記語言 (XML))結構----資料集中的資料還可按照 XML資料的形式訪問。提供了完成以下操作的方法:以 XML 形式讀取和寫入資料;以 XML 結構描述形式讀取和寫入資料集的結構。此外,為了允許進行同步查看、查詢和修改 XML 形式的資料,可將 XmlDataDocument 與資料集相關聯。 選擇 ADO.NET 或 ADO
ADO.NET 和 ADO都具有以下特點:易於編程;與語言無關;實現過程簡單;使用最小網路流量;應用程式前端和資料來源之間需要的層數很少。兩種方法都可提供高效能的資料訪問。
無論您選擇這兩種資料訪問技術中的哪一種,都會影響應用程式的設計、擴充性、互通性、易於維護性以及其他許多方面。這些方麵包括:
Managed 程式碼 如果您的應用程式是用Managed 程式碼編寫的,並且基於公用語言運行庫構建,則應使用 ADO.NET。如果是用 C++ 編寫Unmanaged 程式碼(尤其是在維護現有的 ADO應用程式時),ADO仍是一個不錯的選擇。資料結構 ADO.NET 資料集可包含一個或多個表,並同時提供基於表的關係視圖和基於 XML 的視圖。資料集使用標準的公用語言運行庫類型,這可簡化編程過程。 ADO 記錄集是單個表,只能以記錄集形式訪問,並且不內含項目關聯性。ADO 記錄集可以是多表 JOIN 查詢的結果,但它仍只是單個結果表。如果希望 ADO 具有多個表,必須擁有多個 Recordset 對象。由於其整合的關係結構,ADO.NET 資料集可提供更好的功能。
資料共用 ADO.NET 為組件間以及跨層的資料交換提供基礎:資料集可以 XML 的形式在 Inte-rnet上傳遞,並可通過防火牆。可以在您的應用程式內以關係表的形式查看資料集,而在其他一些應用程式中以 XML資料結構的形式查看同一資料集。資料集提供方便的雙向轉換:從資料集表到 XML 文檔,以及從 XML 文檔到資料集表。 如果使用 COM 封送處理傳輸 ADO 記錄集,目標應用程式必須編寫成使用記錄集資料結構。與唯讀取 XML 資料相比較,它所要求的編程難度更大。或者,可以將 ADO 記錄集保持為 XML,這樣可以更方便地與其他應用程式和服務共用資料。
可縮放性 ADO.NET 是縮放性最強的解決方案。ADO.NET從一開始就被設計為這樣一種資料訪問結構,即用來產生具有較低總擁有成本的可縮放 Web應用程式的最佳資料訪問結構。如果您不需要可縮放性並且不用Managed 程式碼編寫,則可繼續使用ADO。遊標位置 應用程式可以在以下兩個位置中的任一處建立結果集:在應用程式進程內(用戶端資料指標)或資料存放區區進程內(伺服器端遊標)。對於任意類型的使用者與資料的即興互動,用戶端資料指標通常是很好的選擇。用戶端資料指標在ADO.NET 中由 DataSet 對象支援,而在 ADO 中則由 ClientCursor Recordset 對象支援。順序的、唯讀伺服器資料指標在ADO.NET中由資料讀取器(如 SqlDataReader 或 OleDbDataReader對象)支援,而在 ADO 中則由只進/唯讀 Recordset對象支援。順序的、唯讀遊標為從資料庫中讀出資料提供最快的方法。
可滾動、可更新的伺服器端遊標在 ADO中由可滾動、可更新的 Recordset對象支援。應謹慎使用伺服器端遊標。通過伺服器端遊標進行的針對結果的非順序滾動和更新操作會保持鎖定並導致資源爭用,這將大大限制應用程式的可縮放性。不使用可滾動、可更新的伺服器端遊標,而在伺服器上對結果的過程處理使用預存程序,應用程式通常會獲益。
資料訪問串連 ADO.NET 和 ADO 都支援到資料庫的顯式串連。在 ADO.NET中,開發人員可使用資料讀取器,同時基於當前位置保持鎖定狀態,並且在讀取資料前需要到資料庫的連續串連。或者,資料可放到資料集中。使用資料集時,開發人員可進行以下選擇:修改資料集中的資料時保持串連和事務處於開啟狀態;或者只在需要將資料填充到資料集並將更改更新回資料庫時才開啟串連並使用事務。當正在傳輸、查看和修改資料集中的資料時,關閉串連可為其他使用者釋放資源和鎖定。在 ADO中,記錄集可在使用者通讀資料庫中的資料時使用開啟的串連並保持鎖定,或者使用用戶端資料指標記錄集,這樣可在不保留資料庫連接的情況下處理資料。 資料滾動 ADO.NET 和 ADO 既可按順序瀏覽資料,也可不按順序瀏覽資料。使用 ADO.NET資料集,還可以方便地從一個資料表中的一行瀏覽到另一個表中的相關行。ADO記錄集和 ADO.NET 資料閱讀器都支援高速、只能向前、唯讀伺服器端遊標。ADO 記錄集唯一支援可滾動、可更新的伺服器端遊標,儘管這種遊標使用伺服器資源,並且大多數情況下可以更好地以預存程序中的邏輯的形式實現,或者以松耦合的用戶端資料指標的形式實現。 使用簡易 ADO.NET資料集提供自我描述的資料,並免除了處理基礎資料構造(如表、列、約束和行)的需要。相反,利用資料集,可使用對象對資料進行型別安全的訪問。這使得程式更易讀、寫和修改。由於應用程式層可以通過 XML格式的資料集交換資料,因此在應用程式的生命週期中可以方便地實現新的擴充通訊。使用 ADO.NET時,使用哪種語言進行資料訪問無關緊要:它們在文法上都是類似的,並使用相同的公用語言運行庫服務。 雖然 ADO.NET 和 ADO 都支援松耦合的資料訪問,但二者存在差異。利用 ADO.NET,可通過修改DataAdapter 對象使用的語句,或通過插入可響應行更新事件的自訂代碼,來控制資料集更改傳輸到資料庫的方式。使用該功能可以最佳化效能、修改驗證檢查或添加其他任何額外處理,所有這些操作都不必更改您的應用程式。有關更多資訊,請參見 .NET 應用程式結構中的問題。 ADO與ADO.NET的比較----------------------------------------------------------項目 ADO ADO.NET——————————————————————————————————————————————————————————資料更新 直接處理 類似批處理資料訪問速度 較慢 快(因為在記憶體中)對於資料記錄的訪問 Recordset DataSet.Tables(“資料表名稱“)資料搜尋 Recordset.find DataSet.Tables(“資料表名稱“).select資料遍曆 Recordset.MoveNext MyDataSet.Tables(“資料表名稱“).Rows(I+=1)一個欄位 Recordset.fields(“欄位名稱“) MyDataSet.Tables(“資料表名稱“).Rows(x,y)通用性 較難在主機間傳遞 可以轉成XML在網路間傳遞(可越過防火牆)資料表達 較單純(僅View和Table) 較完整(可包括多個資料表,以及其中的關聯)系統資源 較浪費(必須一直串連)


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。