[C#.NET][WCF] 第一隻簡單的 WCF Service
WCF 程式沒辦法直接執行,所以它必須要裝載在別人身上,也就是「載體」,載體(hosting)的方式主要有三種:
- IIS hosting:最常見的就是裝在IIS上,WCF生命週期都是靠IIS來管理
- Windows hosting:以 Console application / Windows Forms application / Windows service 為載體,WCF的生命週期必需要自行管理。
- WAS hosting:以作業系統為載體 Windows 2008 Server /Vista /Windows 7
下圖參考:http://msdn.microsoft.com/zh-tw/hh882281 WCF 服務裝載選擇
下圖參考:http://msdn.microsoft.com/zh-tw/hh882281 WCF 服務裝載選擇
建立WCF專案
建立完成的專案就像這樣
在這裡要介紹一下"合約",預設的專案會幫我們生出上圖這些東西,基本上合約只要在接口或是類別加上特性(Attribute)即可
@IService.cs裡
服務介面的合約
[ServiceContract]接口(interface)的合約特性
[OperationContract]接口成員的合約特性,用來讓外部介面調用
類別的合約
[DataContract]資料類別的合約特性
[DataMember]資料類別的成員合約特性
@Service.cs裡
我們可以看到Service繼承了IService,.NET 會自動的幫我們Service加上變成ServiceClient類別,就是所謂的Proxy類別
為了讓範例更簡單,我將IService改成以下
[ServiceContract]
public interface IService
{
[OperationContract]
string GetHello(string name);
}
Service類別,改成以下:
public class Service : IService
{
public string GetHello(string name)
{
return string.Format("Hello,{0}", name);
}
}
對WCF的專案裡的.svc按右鍵執行View in Browser
把 http://localhost:11945/WCFServiceLib/Service.svc?wsdl copy下來
PS.這時候你會發現模擬的IIS已經在背景執行。
新增測試專案
加入一個新的Winform專案
然後再新增的Winform專案裡加入服務參考
把剛剛的網址貼上,然後按下GO
http://localhost:11945/WCFServiceLib/Service.svc?wsdl
把WCF加入參考
然後我在Form上新增一個按鈕,呼叫我剛剛寫的GetHello
設定Winform為啟動專案,按下F5,按下按鈕
如此一來,一隻簡單的裝載於IIS的WCF就完成了。
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET