通過HTTP協議標準動作消費REST WCF 服務
前幾節介紹了REST WCF 服務的一些基本的特點,本節說明一下,如何基于HTTP的標準動作來使用REST WCF 服務。由于RESTful服務的架構風格基于HTTP協議,并且其設計原則中明確指出:通過通用的連接器接口來使用資源。對于REST架構風格的服務,主要通過它8個動作中的4個來使用資源,即:GET,POST,PUT,DELETE。
在RESTful 服務中,GET,POST,PUT,DELETE的標準操作如下:
GET:獲取資源
POST:修改資源
PUT:創建資源
DELETE:刪除資源
本節涉及的要點如下:
1、如何定義接口規范,使客戶端通過能通過HTTP協議的標準動作來使用REST WCF資源。
2、客戶端如何通過HTTP標準動作使用使用資源
首先介紹一下開發環境:
VS2008 SP1。由于是基于Framework3.5的平臺,所以本節介紹的只是REST WCF 3.5的一些特點。Ddmo結構圖:

1、接口規范的定義:
對REST 架構風格有一些了解的同學都知道,在System.ServiceModel.Web程序集中,微軟為我們提供了兩個特性:WebGetAttribute、WebInvokeAttribute.
前幾節也做過一個簡要的介紹,WebGetAttribute通過名稱可以得知,它是用來獲取資源的,所以它使用的HTTP動作是GET。在REST WCF中,其他的幾個動作都是在WebInvokeAttribute中定義的。
REST WCF中,就是通過在WebGetAttribute與WebInvokeAttribute中,通過UriTemplate屬性定義了資源的使用方式。另外還可以通過RequestFormat、ResponseFormat定義客戶端請求時使用的數據格式以及服務端返回給客戶端的數據格式。
在本例中,通過服務契約定義來定義接口規范以及客戶端的使用規范。如下圖示:

注:UriTemplate中類似Student/{name}中的{name}即為所定義方法中所需參數的占位符。
2、客戶端使用REST WCF 。
2.1使用HTTP GET 動作獲取資源:
string getMsg = client.DownloadString("http://localhost:6012/Student.svc/Student/zhangRest");
Console.WriteLine(string.Format("get方法獲取到的學生信息:{0}", getMsg));
2.2使用HTTP POST 動作修改資源:
string postMsg = client.UploadString("http://localhost:6012/Student.svc/Student/lizhi/0105245687", "POST",
string.Empty);
Console.WriteLine(string.Format("post方法修改到的學生信息:{0}", postMsg));
2.3使用HTTP DELETE 動作刪除資源:
string deleteMsg = client.UploadString("http://localhost:6012/Student.svc/Student/zhangRest", "DELETE", string.Empty);
Console.WriteLine(string.Format("delete方法刪除到的學生信息:{0}", deleteMsg));
2.4使用HTTP PUT動作添加資源:
string addMsg = client.UploadString("http://localhost:6012/Student.svc/Student/zhangsan/0102356897", "PUT", string.Empty);
Console.WriteLine(string.Format("put方法添加的學生信息:{0}", addMsg));
四種動作的使用方式如上所示。
在REST WCF中,URI(Uniform Resources Identifier)就是在服務契約中定義通過UriTemplate定義的,而不像在SOA架構下的服務中直接使用方法名。
浙公網安備 33010602011771號