[WCF-REST]Cilent端叫用不使用服務參考

[WCF-REST]Cilent端叫用不使用服務參考

前言

WCF中的REST服務,最令我覺得特別的是Client開發端可以不用[服務參考],就可以直接透過Uri去作存取,

但麻煩的是Client端直接使用Uri叫用時就要知道要傳什麼樣的Url Format以及回傳什麼樣的格式(例:xml、json...)

,萬一服務端的設定改了,在Client是無法在設計時期知道的,如下範例

WCF端

clip_image001_thumb[2]

Client:使用WebRequest取回Stream的資料並作反序列化回User物件

clip_image002_thumb[1]

上述若WCF端改了參數,則Client端無法知道,當然你也可以使用[服務參考]產生WCF參考來解決,如下圖

clip_image003_thumb[1]

而若你不想用[服務參考]的話,另外一種作法就是讓Clinet端也去實作與WCF服務相同的介面。

範例說明

1.專案架構

clip_image004_thumb[1]

2.共用端程式,新增一個共用介面IMyWCF

clip_image005_thumb[1]

3.WCF服務端程式,實作IMyWCF回傳使用者物件

clip_image006_thumb[1]

WCF組態設定

clip_image007_thumb[1]

4.Client端程式
透過實作ClientBase及共用層的IMyWCF來叫用WCF

clip_image008_thumb[1]

Client端組態設定

clip_image009_thumb[1]

執行程式

clip_image010_thumb[1]

寫的不清楚的地方、敬請見諒。

範例下載

http://cid-fab913153ae2ed86.office.live.com/self.aspx/.Public/Code/WCF/WcfRestSampleDemo.rar

參考文章

http://www.switchonthecode.com/tutorials/creating-a-rest-client-using-wcf

http://www.dotblogs.com.tw/regionbbs/archive/2010/03/29/vs2010.wcf.4.rest.service.expose.aspx