比較 ADO.NET 和 ADO
更新:2007 年 11 月
您可將 ADO.NET 的功能與 ActiveX Data Objects (ADO) 的特定功能加以比較,以便增進您對這些功能的了解。
In-Memory 資料表示
在 ADO 當中,In-Memory 資料表示是資料錄集,在 ADO.NET 則是資料集。兩者之間有著重大的差異。
資料表的數目
資料錄集看起來就像單一資料表。如果資料錄集要包含來自多個資料庫資料表的資料,它必須使用 JOIN 查詢來將多個資料庫資料表的資料組合至單一的結果資料表當中。
相反地,資料集則是一個或多個資料表的集合。資料集內的資料表稱為資料的資料表 (Data Tables),明確地說就是 DataTable 物件。如果資料集包含來自多個資料庫資料表的資料,它通常會包含多個 DataTable 物件。也就是說,每個 DataTable 物件通常會與一個資料庫資料表或檢視相對應。如此,資料集就可以模仿基礎資料表的結構。
資料集通常也包含關聯性。資料集內的關聯性就像是資料庫中的外部索引鍵關聯性,也就是讓資料表的資料列彼此產生關聯。例如,如果資料集包含一個有關投資者的資料表,以及另一個有關每個投資者所購買之股票的資料表,它也可以包含關聯性,將投資者資料表的每個資料列與購買資料表的對應資料列連接。
由於資料集能夠存放多個個別資料表並維護資料表之間的關聯性資訊,因此能夠存放比資料錄集更多的資料結構,包括自我關聯的資料表以及具有多對多關聯性 (Many-To-Many Relationship) 的資料表。
資料巡覽和資料指標
在 ADO 當中,您使用 ADO MoveNext 方法來依序掃描資料錄集的資料列。在 ADO.NET 裡,由於資料列是以集合表示,因此您可以在資料表中執行迴圈 (如同對任何集合一般),或是透過序數或主要索引鍵索引存取特定資料列。DataRelation 物件維護有關主要及細節資料錄的資訊,並提供方法來讓您取得與您正在使用之資料錄相關的資料錄。例如,從 Investor 資料表的資料列 "Nate Sun" 開始,您可以巡覽至描述他所購買股票的 Purchase 資料表的資料列集。
注意事項: |
---|
Windows Form 應用程式提供了 BindingNavigator,讓您在資料來源中巡覽資料錄。如需詳細資訊,請參閱 BindingNavigator 控制項 (Windows Form)。 |
資料指標 (Cursor) 是一資料庫項目,它可控制資料錄巡覽、更新資料的能力以及其他使用者是否可看到資料庫的變更。ADO.NET 並沒有內建的資料指標物件,而是包含提供傳統資料指標功能的資料類別。例如,ADO.NET DataReader 物件就提供順向和唯讀資料指標的功能。
最小化開啟連接
在 ADO.NET 中,連接開啟的時間只足以執行資料庫作業,例如 Select 或 Update。您可將資料列讀入資料集然後使用它們,不需要與資料來源保持連接。在 ADO 中,雖然資料錄集提供中斷連接存取,但 ADO 主要還是設計來使用連接存取。
ADO 與 ADO.NET 當中的中斷連接處理最明顯不同是,在 ADO 中您是藉由呼叫 OLE DB 提供者 (Provider) 的方式來與資料庫通訊。在 ADO.NET 中,您可以透過將呼叫 OLE DB 提供者或基礎資料來源提供之 API 的 TableAdapter 或資料配接器 (例如 SqlDataAdapter) 來與資料庫通訊。兩者之間最大的差異是配接器可讓您經由將效能最佳化、執行資料驗證檢查或加入任何額外的處理,來控制資料集變更傳送至資料庫的方式。
在應用程式之間共用資料
在應用程式之間傳送 ADO.NET 資料集要比傳送 ADO 中斷連接資料錄集容易許多。若要從一個元件將 ADO 中斷連接資料錄集傳送至另一元件,您需要使用 COM 封送處理 (Marshalling)。若要在 ADO.NET 中傳送資料,您需要使用可傳送 XML 資料流的資料集。
比起 COM 封送處理,傳送 XML 檔具有下列優點:
更多資料型別
COM 封送處理提供有限的資料型別集,只有由 COM 標準定義的資料型別。因為 ADO.NET 當中的資料集傳送是以 XML 格式為基礎,所以資料型別並無限制。因此,共用資料集的元件可以使用平常使用的多種資料型別。
效能
傳送大型的 ADO 資料錄集或大型的 ADO.NET 資料集會消耗可觀的網路資源,而隨著資料量的增加,網路的壓力也跟著加重。ADO 和 ADO.NET 都可以讓您將傳送的資料最小化。但 ADO.NET 提供另一個效能優點,那就是 ADO.NET 不需要資料型別轉換。而 ADO 需要 COM 封送處理在元件之間傳送資料錄集,因此 ADO 資料型別必須轉換為 COM 資料型別。
穿透防火牆
防火牆會對試著傳送中斷連接 ADO 資料錄集的兩方元件產生干擾。請記住,防火牆設定通常允許 HTML 文字通過,但會阻止系統層級的要求 (例如 COM 封送處理) 通過。
由於元件使用 XML 交換 ADO.NET 資料集,因此防火牆可允許資料集通過。