建立 WCF Service Library 專案
1. 建立WCF Service Library專案
這個專案範本預設會幫我們加入:IService1.cs、Service1.cs、和App.config。 可以依以下步驟更改成我們想要的名稱。
2. 替服務介面更名
3. 在介面中加入新的服務方法
當加入服務方法時,必須先定義一個 Contract, 用來說明服務包含哪些 Operation, 要使用哪種 Message Pttern。 在服務合約中至少要有一個標示為 OperationContract 的方法,否則載入服務時會有例外。
4. 替服務類別更名,並實作 ICalcService 介面
底下是精簡過的ICalcService.cs程式碼。 包含一個 ICalcService 介面和 CompositeType 類別。 其中 ICalcService 介面套用屬性 ServiceContract,表示它是定義服務合約的介面,裡面就是用來定義要提供給用戶端呼叫的操作。 而 CompositeType 類別則套用屬性 DataContract,表示它是用來定義呼叫操作時所需傳遞的資料型別。
[ServiceContract] public interface ICalcService { // TODO: 在此新增您的服務作業 [OperationContract] string Add(int a, int b); } [DataContract] public class CompositeType { bool boolValue = true; string stringValue = "Hello "; [DataMember] public bool BoolValue { get { return boolValue; } set { boolValue = value; } } [DataMember] public string StringValue { get { return stringValue; } set { stringValue = value; } } }
5. 按F5執行
在 Visual Studio 中執行一個 WCF 類別庫,實際上是 VS 啟動「WCF 服務主機」(WcfSvcHost.exe),並自動掛載這些 WCF 服務。 所以你可以在桌面的右下角看到以下提示訊息。
6. 測試 WCF 服務
變更預設的繫結類型
當建立 WCF Service 時,預設會使用 wsHttpBinding 這個繫結類型, 下面示範如何建立一個 basicHttpBinding 繫結類型,並將變更服務的繫結類型。
1.開啟組態設定工具
2.將預設的 wsHttpBinding 修改成 basicHttpBinding
3.新增繫結組態 (BindingConfiguration)
3.1 點選新增繫結組態
3.2 選取 basicHttpBinding 繫結類型
3.3 設定 SendTimeOut 為 10 分鐘
3.4 CTRL+S 儲存
4. 設定服務的繫結組態
將服務的 BindingConfiguration 設定成上一步驟新增的繫結組態5.F5, Run,可以正確執行運算
備註:
WSHttpBinding 與 BasicHttpBinding 類似,不過前者提供更多的 Web 服務功能。 它使用 HTTP 傳輸並提供訊息安全性,如同 BasicHttpBinding,不過它也提供交易、可靠傳訊以及 WS-Addressing。
裝載 WCF 服務
上面範例中,我們已經建立好 WCF service。 contract 的定義是放在 ICalcService 介面中, contract 的實作則放在 CalcService 類別裡。 而且已經將 endpoint 的繫結組態由預設的 wsHttpBinding 變更成 basicHttpBinding。 底下是 App.config 所顯示的資訊。
<services> <service name="TestWcfServiceLibrary.CalcService"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="NewBinding0" contract="TestWcfServiceLibrary.ICalcService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8732/Design_Time_Addresses/TestWcfServiceLibrary/Service1/" /> </baseAddresses> </host> </service> </services>
WCF 服務必須運行於 host process 中,這個 host process 可以是 IIS 、WAS、Windows 服務、或你自己開發的 .NET 應用程式(即所謂的 self-hosting)。運行於 IIS 和 WAS 環境都可享有生命週期控制的優點,這裡要示範的是將剛才建立的 WCF 服務部署到 IIS。
- 在 IIS 中建立一個網站,指定一個連接埠,如 8060 ,實體路徑指向一個新建立的空資料夾。 例如:D:\myProject\WCF_Service。 並將驗證選項設定成「啟用匿名存取」。
- 回到 VS2008,在方案總管中的專案名稱上點右鍵,選 Publish,參考下圖設定:
- 部署完成後,到實際部署的資料夾中看一下產生了哪些檔案。你應該會看到:
PS.
其實發行所做的事情,就是新增一個 .svc 檔,並指定服務的類別名稱。如下所示內容:
<%@ ServiceHost Service="TestWcfServiceLibrary.Service1" %>
- 開啟瀏覽器測試一下:網址輸入 http://localhost:8060/TestWcfServiceLibrary.Service1.svc ,若一切順利,應該會看到類似這樣的畫面:
撰寫 WCF 用戶端程式
寫一個簡單的用戶端程式來測試 WCF 服務。步驟如下:
- 在測試專案中,在專案的右鍵選單中,執行「加入服務參考」,並完成以下設定:
- 編輯測試程式碼:
protected void btnConnectWCFService_Click(object sender, EventArgs e) { myCalcService.CalcServiceClient wcf_service; using (wcf_service = new myCalcService.CalcServiceClient()) { string result = wcf_service.Add(5, 10); myDebug.ResponseBR(result); } }
- 執行驗證。
沒有留言:
張貼留言