建立 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 裝載到服務主機上之後,你必須另外建立用戶端程式,以進行 WCF 服務的測試工作。 不過, Visual Studio 除了提供「WCF 服務主機」,另外也提供一個「WCF測試用戶端」(WcfTestClient.exe)。 當WCF服務主機裝載服務完成之後,就會自動開啟WCF測試用戶端工具。如下圖:

在WCF測試用戶端中,你只要雙擊測試的方法,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); } } - 執行驗證。