簡介
數據訪問一直是開發 Web 應用程序的一個關鍵問題。幾乎每個商業應用程序都需要數據驅動的 Web 頁面。由於數據訪問如此普遍,開發人員不斷地為簡單的數據庫任務重新生成復雜的代碼就顯得毫無意義了。開發人員需要從格式各異的不同數據源中快速訪問數據。幸運的是,ASP.NET 2.0 中新增的數據訪問控件和 ADO.NET 2.0 解決了這一問題。
對於傳統的 ASP 和 ASP.NET 1.1 應用程序而言,開發人員不得不創建代碼訪問和更新數據庫,將檢索到的數據轉換為浏覽器識別的 HTML 格式。盡管 Visual Studio .NET 的向導可以幫助完成這個任務,但是要完成諸如分頁和排序這樣的高級功能,仍需要在後端代碼和前端顯示之間進行復雜的同步。通常,這樣的代碼難以維護和同步,特別是在數據庫發生更改或需要在頁面上顯示附加數據的時候。此外,作為數據存儲,XML 需要添加大量混有數據訪問邏輯的代碼。
為了提高開發人員的開發效率和 Web 應用程序的性能,ASP.NET 2.0 通過新增的數據控件中封裝的功能,更加靈活地控制數據,從而減少訪問和顯示數據所需的代碼。從傳統的數據庫到 XML 數據存儲,各種各樣的數據源都能連接到這些控件。所有數據源都以相似的格式進行處理,大大地降低了開發數據驅動的應用程序的復雜性。ASP.NET 2.0 需要進行廣泛的體系結構改進,以便從內部支持這些功能。新增的數據源對象通過業界認可的最佳方法增加了一個非常可靠的基礎結構。現在,大多數復雜的應用程序都可以利用 ASP.NET 2.0 提供的數據訪問工具。從體系結構和機制上限制 ASP.NET 1.x 執行的綁定和緩存問題,在 ASP.NET 2.0 中都得以解決了。
如果您是一位 ASP 開發人員,那麼您會通過這篇白皮書了解到 ASP.NET 2.0 新增的數據訪問功能和 ADO.NET 2.0 的數據訪問模型。如果您是一位 ASP.NET 1.1 的開發人員,那麼這篇白皮書概括的 ADO.NET 新增的改進功能和數據訪問模型,以及介紹的如何使用 ASP.NET 2.0 新增的數據訪問控件將幫助您減少開發數據驅動 Web 應用程序時編寫的代碼數量。
Web 應用程序的數據訪問
在 .NET Framework 中,通過 ADO.NET API 執行數據訪問。API 提供一個抽象層來封裝和隱藏直接訪問數據庫的細節,這些細節有時是很雜亂的。ASP.NET 2.0 Web 應用程序通過提供的一些服務在 ADO.NET 上生成,這些服務用於自動生成與各種類型數據的連接,將用戶控件與數據綁定,減少開發數據識別的 Web 應用程序所需的代碼數量。
數據訪問體系結構
對於 .NET Framework 中的 Web 應用程序,數據訪問依賴於兩個獨立的體系結構層。第一層由執行數據訪問所需的框架組件組成。第二層由為程序員提供數據訪問功能的 API 和控件組成。從實踐的觀點看,只需了解能否為特定數據源找到匹配的數據提供程序。
數據訪問涉及四個主要的組件:Web 應用程序 (ASP.NET)、數據層 (ADO.NET)、數據提供程序,以及真正的數據源。這些組件之間的關系構成了所有數據識別 Web 應用程序的基礎結構。
圖 1.組件體系結構
數據存儲
數據存儲始於堆棧底部,提供了整個數據訪問體系結構的基礎。通過 ADO.NET 2.0、ASP.NET 2.0 的新增控件,Web 應用程序能夠訪問多種數據存儲中的數據,包括關系數據庫、XML 文件、Web 服務、平面文件,或諸如 Microsoft Excel 這樣的電子數據表程序中的數據。實際上,真正的數據源與讀取和操作數據所使用的機制關系不大。
數據提供程序
由於具有提供程序模型,ADO.NET 使用一組類和命令與不同的數據源進行交互。提供程序通過定義的一組接口和類掛鉤來提供對一個特定數據源的存儲和檢索功能。這種模型的靈活性使開發人員只需編寫一組數據訪問代碼(使用 ADO.NET)就能夠訪問多種類型的數據。
在 ASP.NET 2.0 中,除了基本的數據訪問之外,提供程序模型實際上還用於多種不同的任務。例如,使用新增的個性化功能存儲用戶數據時依賴於幾類提供程序。因此,實際的提供程序結構是功能依賴的。一個成員提供程序的用途與數據訪問提供程序的用途不同。
下表顯示組成 ADO.NET 數據提供程序的四個核心對象:
表 1.一個 ADO.NET 數據提供程序的核心對象 對象 描述 Connection 建立到指定資源的連接 Command 對一個數據源執行命令。公開 Parameters,在 Connection 的 Transaction 范圍內執行。 DataReader 從一個數據源讀取只進的只讀數據流。 DataAdapter 填充一個 DataSet,解析數據源的更新。提供程序模型明確地分離了各種使用用途。ASP.NET 開發人員能夠集中精力構建功能性的、應用人類工程學的用戶界面,而後端開發人員則能夠通過現有的企業級數據存儲實現復雜的集成。使用 ASP.NET 2.0 的提供程序模型開發 Web 應用程序是一個極好的選擇。