建立 WCF Service Library 專案
建立 Service Library
1.建立WCF Service Library專案
這個專案範本預設會幫我們加入:IService1.cs、Service1.cs、和App.config。 可以依以下步驟更改成我們想要的名稱。
2.替服務介面更名
3.在介面中加入新的服務方法
當加入服務方法時,必須先定義一個 Contract, 用來說明服務包含哪些 Operation, 要使用哪種 Message Pttern。 在服務合約中至少要有一個標示為 OperationContract的方法,否則載入服務時會有例外。
4.替服務類別更名,並實作 ICalcService 介面
5.按F5執行
底下是精簡過的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; }
}
}
變更預設的繫結類型
當建立 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 所顯示的資訊。
contract="TestWcfServiceLibrary.ICalcService">
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);
}
} - 執行驗證。