程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 學習使用ADO.NET Data Services (ADO.NET 數據服務框架) - Part1

學習使用ADO.NET Data Services (ADO.NET 數據服務框架) - Part1

編輯:關於.NET

ADO.NET Data Services Framework是在.NET Framework 3.5 SP1新推出的擴充功能,這個功能和概念 在以前的.NET 1.0-.NET3.5 技術中都沒有出現的新概念,它主要用途是可以很容易的將數據庫服務公開 在網絡上,然後透過URL網址就可以對數據庫進行CRUD的操作。ADO.NET Data Services能通過一個REST化 的方式將數據以Web上的數據服務展示。使得應用可以以數據服務的方式展現數據,然後被應用在企業網 絡和互聯網上的Web客戶端中。

REST (Representational State Transfer) 用最單純的 URL 網址,就讓一般客戶、應用程序能直接 訪問、寫入遠程主機上的數據庫。此外,微軟實現 REST 的 ADO.NET Data Services,亦有一套安全控管 、存取權限控管的機制,不必擔心安全性的問題。

在 .NET 平台方面,未來的 .NET Framework 4.0 及 Visual Studio 2010,仍有 ADO.NET Data Services Framework 2.0 的版本,也有新的 4.0 版的 System.Data.Services 類庫。

在我的博客網站 (http://blog.entlib.com/entlibforum ) 將演示如何在n-tier 應用程序中使用 ADO.NET Data Servers,不過本文將重點介紹ADO.NET Data Services 的入門部分。按照如下具體操作來 完成整個練習。

File > New Project > ASP.NET Web Application....

通過VS 2008 SP1 創建一個ADO.NET Data Service 是很容易的,第一步創建一個ASP.NET Web Application 項目:

上述將創建一個帶有default.aspx 頁面的ASP.NET 項目。如果你僅僅需要創建service,你可以刪除 default.aspx 文件。接著增加一個新的item到項目中,選擇ADO.NET Data Service。

在本實例中我們采用了SubtextData 數據庫(http://blog.entlib.com 開源博客平台的後台數據庫) ,因此這裡對ADO.NET Data Service 命名為 SubtextData.svc。上述步驟將自動添加 System.Data.Services 和System.Data.Services.Client 到項目中。右鍵點擊SubtextData.svc 文件, 選擇”設置為起始頁”選項。

上述步驟自動創建的SubtextData.svc.cs 文件如下,SubtextData 類繼承DataService類:

namespace MyDataService
{
  public class SubtextData : DataService< /* TODO: 在此放置數據源類名*/ >
  {
    // 僅調用此方法一次以初始化涉及服務范圍的策略。
    public static void InitializeService(IDataServiceConfiguration config)
    {
      // TODO: 設置規則以指明哪些實體集和服務操作是可見的、可更新的,等等。
      // 示例:
      // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
      // config.SetServiceOperationAccessRule("MyServiceOperation", 

ServiceOperationRights.All);
    }
  }
}

增加Entity Data Model

增加ADO.NET Entity Data Model 到項目中,文件命名為 SubtextDataModel。然後,按照實體數據模 型向導創建模型。這裡,我們選擇從數據庫創建,並選擇所有的數據表,完成向導操作。

上述過程創建IQueryable 數據源SubtextDataEntities。現在,我們返回Data Service類,並填充 Class name,如下所示:

public class SubtextData : DataService< SubtextDataEntities >

設置數據模型中表的訪問控制

下一步,我們需要控制數據模型中表的訪問控制。允許對數據庫中所有表進行讀、寫操作是一個糟糕 的設計,因此我們需要在DataServiceConfigration 中配置 EntitySetAccessRule,並傳入給 InitializeService 方法。這是一個共享的方法,因此不管創建多少個SubtextData DataService,該方 法僅運行一次。在通過Visual Studio 調試時,如果你修改了該方法的代碼,你需要記得強制重新編譯。

    public static void InitializeService(IDataServiceConfiguration config)
    {
      // TODO: 設置規則以指明哪些實體集和服務操作是可見的、可更新的,等等。
      // 示例:
      config.SetEntitySetAccessRule("*", EntitySetRights.All);
    }

上述設置允許所有人更新、插入、刪除和查詢模型中的所有表,可能是一個不好的設計,因此你可以 調整為只讀Read-only:

config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);

你也可以寫一些額外的方法用來查詢和更新數據,我們在隨後的文章會進行描述,或者你也可以直接 訪問MSDN - http://msdn.microsoft.com/en-us/library/cc907912.aspx。

下面我們開始在 IE 浏覽器通過HTTP GET 查詢數據。

通過HTTP GET 查詢數據

編譯運行本項目,將自動打開浏覽器,並列出所有在數據模型中運行方法的實體。

http://localhost:31948/SubtextData.svc/

其中具體的端口號可能不同。

當我們想查詢數據時,可以通過HTTP GET 在浏覽器地址欄輸入:

http://localhost:31948/SubtextData.svc/subtext_Content

將返回SubtextData數據庫中所有博客帖子的種子(feed)。如果你使用 IE 或者Firefox浏覽器,浏 覽器將自動對種子應用樣式表CSS,不過你可以右鍵點擊,並查看源文件就可以看到實際返回的數據。下 面僅僅顯示部分返回的數據:

如果仔細一點,你會發現上述文件也返回subtext_content 到其他表之間的關聯關系。例如,你可以 返回subtext_content 中特定文章的評論信息:

http://localhost:31948/SubtextData.svc/subtext_Content(10)/subtext_FeedBack

上述鏈接返回subtext_content 文章(10)的所有評論列表信息。

如果你對開發RESTful Web services 感興趣,推薦你下載 Fiddler 工具,該工具允許你監視HTTP 數 據,使用Fiddler 比 IE 更方便查看數據。

歡迎繼續訪問 - 學習使用ADO.NET Data Services (ADO.NET 數據服務框架) - Part 2,及下載本文 范例程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved