趣談ADO.NET數(shù)據(jù)服務(wù)框架
框架對于我們的意義就是讓我們的編程更規(guī)范更簡單,下面我們就來介紹介紹ADO.NET數(shù)據(jù)服務(wù)框架。ADO.NET實體框架旨在支持以數(shù)據(jù)為中心的應(yīng)用程序和服務(wù),并提供平臺用于對數(shù)據(jù)進行編程,該平臺將抽象級別從邏輯關(guān)系級別提升為概念級別。通過使開發(fā)人員可以在更高的抽象級別上使用數(shù)據(jù),實體框架 支持獨立于任何特定數(shù)據(jù)存儲引擎或關(guān)系架構(gòu)的代碼。有關(guān)更多信息,請參見 實體框架簡介。
#T#實體框架支持 實體數(shù)據(jù)模型 (EDM) 在存儲和概念級別上定義數(shù)據(jù)以及這兩個級別之間的映射。它還使開發(fā)人員能夠直接對在概念級別上定義為公共語言運行庫 (CLR) 對象的數(shù)據(jù)類型進行編程。實體框架 提供一些工具,用于基于現(xiàn)有數(shù)據(jù)庫生成 EDM 和相關(guān) CLR 對象。過去在創(chuàng)建基于對象的數(shù)據(jù)應(yīng)用程序和服務(wù)時,需要大量數(shù)據(jù)訪問代碼,而這些工具減少了這些代碼的使用,也使根據(jù)現(xiàn)有數(shù)據(jù)庫創(chuàng)建面向?qū)ο蟮臄?shù)據(jù)應(yīng)用程序和服務(wù)更為快速。
ADO.NET數(shù)據(jù)服務(wù)框架概述
ADO.NET數(shù)據(jù)服務(wù)框架支持可通過標準 Internet 協(xié)議 (HTTP) 訪問的數(shù)據(jù)服務(wù)。ADO.NET 數(shù)據(jù)服務(wù)以具象狀態(tài)傳輸 (REST) 資源的形式提供數(shù)據(jù),可通過 URI 命名約定對這些資源進行標識和尋址。根據(jù)實體數(shù)據(jù)模型 (EDM) 的規(guī)范,將數(shù)據(jù)資源定義為實體和關(guān)系。已知的格式(例如 JSON、AtomPub 和 XML)表示為響應(yīng) HTTP 謂詞(GET、PUT、POST 和 DELETE)而傳輸?shù)幕谖谋镜臄?shù)據(jù)。
ADO.NET數(shù)據(jù)服務(wù)框架包括用于創(chuàng)建數(shù)據(jù)服務(wù)的服務(wù)器 API 和實現(xiàn)查詢和更新(由遠程應(yīng)用程序執(zhí)行)的編程上下文的客戶端 API。ADO.NET 數(shù)據(jù)服務(wù)可與許多類型的應(yīng)用程序一起使用。雖然框架能夠基于實體數(shù)據(jù)模型 (EDM) 有效地部署數(shù)據(jù),但也可以從實現(xiàn) IQueryable 接口的任何數(shù)據(jù)源創(chuàng)建 ADO.NET 數(shù)據(jù)服務(wù)。在客戶端上,任何可發(fā)送 HTTP 請求的應(yīng)用程序都能夠與 ADO.NET 數(shù)據(jù)服務(wù)進行交互。
關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS) 中的數(shù)據(jù)可通過對象關(guān)系模型進行映射并通過 ADO.NET 數(shù)據(jù)服務(wù)進行部署,但 ADO.NET 數(shù)據(jù)服務(wù)并不要求進行對象關(guān)系映射。ADO.NET 數(shù)據(jù)服務(wù)框架可以使用實現(xiàn) IQueryable 的任何數(shù)據(jù)源?;?XML 數(shù)據(jù)源的數(shù)據(jù)服務(wù)、Web 服務(wù)、應(yīng)用程序邏輯和數(shù)據(jù)訪問技術(shù)(例如 LINQ to SQL)都可實現(xiàn) EDM 架構(gòu)和使用派生自 LINQ 的查詢機制。客戶端應(yīng)用程序通過發(fā)送 GET、PUT、POST 和 DELETE 請求與 ADO.NET 數(shù)據(jù)服務(wù)進行交互。數(shù)據(jù)以腳本環(huán)境中使用的開放格式(例如 JSON 和 AtomPub)進行傳輸。公共語言運行庫 (CLR) 應(yīng)用程序可以引用 .NET 客戶端庫(ADO.NET 數(shù)據(jù)服務(wù)框架),該庫中包括可創(chuàng)建用于數(shù)據(jù)查詢和更新的編程上下文的類。
創(chuàng)建 ADO.NET數(shù)據(jù)服務(wù)
在ADO.NET數(shù)據(jù)服務(wù)框架中,創(chuàng)建一個支持創(chuàng)建、讀取、更新和刪除操作的數(shù)據(jù)服務(wù)分為三個步驟:
1.創(chuàng)建數(shù)據(jù)模型。ADO.NET 數(shù)據(jù)服務(wù)將部署一個位于概念數(shù)據(jù)模型之上的 REST 接口。ADO.NET 數(shù)據(jù)服務(wù)本身支持基于 ADO.NET 實體框架的數(shù)據(jù)模型。ADO.NET 數(shù)據(jù)服務(wù)還提供一種擴展機制,通過此擴展可利用公共語言運行庫 (CLR) 對象部署數(shù)據(jù)模型。從 Microsoft .NET Framework 3.5 開始提供的 AsQueryable 方法能夠有效地將 IQueryable<T> 接口添加到實現(xiàn) IEnumerable<T> 的對象上。通過此新的接口,可以在 .NET Framework 中輕松地基于列表、數(shù)組和集合來部署 ADO.NET 數(shù)據(jù)服務(wù)。有關(guān) ADO.NET 數(shù)據(jù)服務(wù)支持的數(shù)據(jù)模型的更多信息,請參見數(shù)據(jù)模型(ADO.NET 數(shù)據(jù)服務(wù)框架)。
2.創(chuàng)建數(shù)據(jù)服務(wù)。配置的數(shù)據(jù)服務(wù)可讓數(shù)據(jù)模型通過 HTTP 協(xié)議訪問。也可以指定由服務(wù)器強制實施的緩存和授權(quán)策略。
3.選擇宿主。ADO.NET 數(shù)據(jù)服務(wù)不直接綁定到網(wǎng)絡(luò)套接字,因此不會直接接受 HTTP 請求。相反,它們在現(xiàn)有的基礎(chǔ)結(jié)構(gòu)(例如 Windows Communication Foundation)中運行。有關(guān) ADO.NET 數(shù)據(jù)服務(wù)支持的宿主的更多信息,請參見數(shù)據(jù)服務(wù)宿主(ADO.NET 數(shù)據(jù)服務(wù)框架).