程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 使用WCF的Web編程模型開發REST風格的Web Service

使用WCF的Web編程模型開發REST風格的Web Service

編輯:關於.NET

WCF中的Web編程模型提供了一種以REST風格來設計Web Service的功能,它不同於以往基於SOAP或者WS-*規范的Web Service,而是以URI和http協議為中心的。對於操作的每一個資源有唯一的標志符,而利用不同的http動作(例如GET,POST,PUT,DELETE)來對這些資源進行相應的操作。同時該模型中還提供URI Template,它是用來定義參數化的URI,使URI的某些部分作為參數在服務中使用。可能這樣解釋十分含糊不清,下面用一個小例子來說明這種Web編程模型。

在該例子中,我們使用Northwind數據庫,.NET Framework 3.5,開發工具我使用的是VS2005.

首先我們實現一個簡單的需求,就是能夠獲取所有的Customers,這樣我們定義一個Customer的Service Contract,其中包括名為GetAllCustomers的Operation Contract。

[ServiceContract]
 public interface ICustomerService
 {
   [OperationContract]
   [WebGet(UriTemplate = "")]
   List<Customer> GetAllCustomers();
 }

可以看到,這是WCF中一個標准Service Contract的定義,其中的WebGet屬性可能是以前沒有見過的,它表示該服務是用Get動作來獲取數據,UriTemplate為空字符串表示它不匹配任何參數。

接下來我們實現這個Service,使之從數據庫中的Customer表讀取所有數據,這裡的Customer是一個Data Contract。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
 public class CustomerService : ICustomerService
 {
   public List<Customer> GetAllCustomers()
   {
     List<Customer> customerList = new List<Customer>();

     //.........從數據庫中獲得所有的Customer


     return customerList;
   }
 }

這樣,服務已經定義好並且有了實際的實現,以及我們應該用Get方法來訪問這個服務,最後,該服務需要被發布出來以讓外界訪問。

ICustomerService customerService = new CustomerService();
 WebServiceHost customerServiceHost
   = new WebServiceHost(customerService, new Uri("http://localhost:3333/"));
 customerServiceHost.AddServiceEndpoint(typeof (ICustomerService), new WebHttpBinding(), "customers");
 customerServiceHost.Open();

在浏覽器中敲入http://localhost:3333/customers,返回的是以xml格式來描述的所有customers。

如果我們想根據CustomerID來查詢某一個Customer,需要在Service Contract中增加一個Operation Contract。

[OperationContract]
[WebGet(UriTemplate = "{customerID}")]
Customer GetCustomer(string customerID);

這裡的customerID是參數,如果訪問的URI是http://localhost:3333/customers/ALFKI,那麼customerID匹配的就是ALFKI。

接下來便實現該Operation Contract,當我們在浏覽器中敲入http://localhost:3333/customers/ALFKI,返回的是xml格式描述的ALFKI這個Customer的信息。

本文主要介紹如何使用WCF的Web編程模型來開發REST風格的Web Service,在接下來的文章中會介紹更多的相關內容,比如復雜的UriTemplate、POST/PUT/DELETE的http動作等。

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