七分鐘內(nèi)掌握ADO.NET數(shù)據(jù)服務(wù)
ADO.NET經(jīng)過長(zhǎng)時(shí)間的發(fā)展,很多用戶都很了解ADO.NET了,根據(jù)個(gè)人的一點(diǎn)經(jīng)驗(yàn),這里我發(fā)表一下個(gè)人理解,和大家討論討論。ADO.NET數(shù)據(jù)服務(wù)是隨同微軟.NET框架3.5 SP1的推出一同正式發(fā)行的一個(gè)框架,主要目的是為了簡(jiǎn)化數(shù)據(jù)中心型Web服務(wù)開發(fā)。ADO.NET數(shù)據(jù)服務(wù)框架,提供了一套完整的庫,還有集成于 Visual Studio中的工具,以及一套定義良好的模式,從而使得以服務(wù)方式基于數(shù)據(jù)模型級(jí)提供相關(guān)CRUD操作變得與簡(jiǎn)單的HTTP操作一樣得容易。
ADO.NET數(shù)據(jù)服務(wù)定義了一個(gè)協(xié)議,用于與基于HTTP以及當(dāng)前流行的AtomPub和JSON標(biāo)準(zhǔn)的數(shù)據(jù)服務(wù)進(jìn)行通信。除了支持這些標(biāo)準(zhǔn)之處, ADO.NET數(shù)據(jù)服務(wù)協(xié)議還定義了數(shù)據(jù)承載的格式及資源的尋址模式。由于它的開放與可互操作設(shè)計(jì),各種各樣的客戶端和服務(wù)器已開始接納ADO.NET數(shù)據(jù)服務(wù)協(xié)議。總之,基于ADO.NET數(shù)據(jù)服務(wù),無論是在開發(fā)者方面還是在應(yīng)用者方面都正在不斷壯大。
#T#從多方面來看,ADO.NET數(shù)據(jù)服務(wù)協(xié)議模擬了微軟.NET RIA服務(wù)應(yīng)用程序中客戶端與服務(wù)器端層間的通信技術(shù)。微軟的目標(biāo)是進(jìn)一步密切這兩種技術(shù)間的協(xié)同操作,從而使得.NET RIA服務(wù)可以使用與ADO.NET數(shù)據(jù)服務(wù)一樣的協(xié)議。這樣一來,對(duì)兩種技術(shù)都有所收益:微軟.NET RIA服務(wù)應(yīng)用程序都能夠與ADO.NET數(shù)據(jù)服務(wù)的相關(guān)內(nèi)容進(jìn)行交互(利用現(xiàn)有的客戶端技術(shù)及開發(fā)工具),基于ADO.NET數(shù)據(jù)服務(wù)的服務(wù)也能夠利用.NET RIA服務(wù)提供的業(yè)務(wù)邏輯模式,豐富的UI控件以及端對(duì)端的開發(fā)經(jīng)驗(yàn)。
根據(jù)微軟提供的消息,目前上述兩種技術(shù)間的協(xié)作仍處于發(fā)展階段。就目前情況,我們可以實(shí)現(xiàn)這兩種技術(shù)的如下協(xié)作開發(fā):
(1) 擴(kuò)展現(xiàn)有的微軟.NET RIA服務(wù)應(yīng)用程序—通過添加一個(gè)ADO.NET數(shù)據(jù)服務(wù)端點(diǎn),以支持基于ADO.NET數(shù)據(jù)服務(wù)協(xié)議的交互操作。
(2) 使用微軟.NET RIA服務(wù)模式擴(kuò)展現(xiàn)有的ADO.NET數(shù)據(jù)服務(wù)以添加業(yè)務(wù)邏輯支持。
本文中的示例僅提供針對(duì)上述***種情況的應(yīng)用展示,即如何把ADO.NET數(shù)據(jù)服務(wù)端點(diǎn)添加一個(gè)現(xiàn)有的微軟.NET RIA服務(wù)應(yīng)用程序中。另外,由于目前上述兩種技術(shù)的交互仍處于發(fā)展階段,所以在實(shí)際開發(fā)環(huán)境下還不推薦使用這種解決方案。
1.創(chuàng)建Silverlight 3示例工程
(1)打開Visual Studio 2008,選擇“文件|新建|項(xiàng)目”菜單命令,打開“新建項(xiàng)目”對(duì)話框。
(2)選擇“Silverlight Application”模板,創(chuàng)建一個(gè)Silverlight 3項(xiàng)目,并命名為ProductsWithDataService。
(3)單點(diǎn)“確定”按鈕,進(jìn)入到下一步以選擇silverlight應(yīng)用的宿主網(wǎng)站。從“web project type”下拉列表框中選擇“ASP.NET Web Application Project”。選中對(duì)話框中最下面的“Enable .NET RIA Services”復(fù)選按鈕,這樣便把RIA框架支持添加到當(dāng)前解決方案中。
至此,我們創(chuàng)建了兩個(gè)工程:
(1) ProductsWithDataService—此工程中包含了Silverlight代碼,這個(gè)工程稱為客戶端工程,這是我們創(chuàng)建的應(yīng)用程序的客戶端層。
(2) ProductsWithDataService.Web—此工程中包含了ASP.NET web應(yīng)用程序代碼,這個(gè)工程稱為服務(wù)器端工程,這是我們創(chuàng)建的應(yīng)用程序的中間層。
至此,一個(gè)基本的集成了.NET RIA Services的Silverlight 3示例工程框架生成完畢。
2.在Web工程上添加ADO.NET實(shí)體數(shù)據(jù)模型
(1)右鍵單擊web工程ProductsWithDataService.Web,在彈出菜單中選擇“添加|新建項(xiàng)”命令。在隨后出現(xiàn)的“添加新項(xiàng)” 對(duì)話框中選擇“ADO.NET Entity Data Model”模板,命名為AdventureWorks.edmx,***單擊“添加”按鈕退出。
(2)在隨后的ADO.NET實(shí)體數(shù)據(jù)模型向?qū)е?,選擇“從數(shù)據(jù)庫生成”并單擊“下一步”按鈕。
(3)在接下來的“選擇您的數(shù)據(jù)連接”對(duì)話框中,選擇已有的AdventureWorks數(shù)據(jù)庫連接,并勾選最下方的“將Web.config中的實(shí)體連接設(shè)置另存為”復(fù)選按鈕,并改名為AdventureWorks2008Entities。
(4)在接下來的“選擇數(shù)據(jù)庫對(duì)象”對(duì)話框中,僅選擇一個(gè)表格Product并輸入模型命名空間為AdventureWorks2008Model。***單擊“完成”按鈕退出ADO.NET實(shí)體數(shù)據(jù)模型,并保存生成的文件。
(3)***,選擇菜單“生成|重新生成解決方案”。