[C#.NET][WCF] 第一隻簡單的 IIS Host

  • 5951
  • 0
  • WCF
  • 2013-08-16

[C#.NET][WCF] 第一隻簡單的 WCF Service

WCF 程式沒辦法直接執行,所以它必須要裝載在別人身上,也就是「載體」,載體(hosting)的方式主要有三種:

  1. IIS hosting:最常見的就是裝在IIS上,WCF生命週期都是靠IIS來管理
  2. Windows hosting:以 Console application / Windows Forms application / Windows service 為載體,WCF的生命週期必需要自行管理。
  3. WAS hosting:以作業系統為載體 Windows 2008 Server /Vista /Windows 7

 

下圖參考:http://msdn.microsoft.com/zh-tw/hh882281 WCF 服務裝載選擇

image

 

下圖參考:http://msdn.microsoft.com/zh-tw/hh882281 WCF 服務裝載選擇

image

 


建立WCF專案

SNAGHTML38b07de

SNAGHTML38b25ab


建立完成的專案就像這樣

SNAGHTML38d8863

在這裡要介紹一下"合約",預設的專案會幫我們生出上圖這些東西,基本上合約只要在接口或是類別加上特性(Attribute)即可

@IService.cs裡

服務介面的合約

[ServiceContract]接口(interface)的合約特性

[OperationContract]接口成員的合約特性,用來讓外部介面調用

 

類別的合約

 

[DataContract]資料類別的合約特性

[DataMember]資料類別的成員合約特性

 

@Service.cs裡

我們可以看到Service繼承了IService,.NET 會自動的幫我們Service加上變成ServiceClient類別,就是所謂的Proxy類別

SNAGHTML3976347

 

為了讓範例更簡單,我將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

SNAGHTML466301b

 

image

 

http://localhost:11945/WCFServiceLib/Service.svc?wsdl copy下來

 

PS.這時候你會發現模擬的IIS已經在背景執行。

SNAGHTML3a83536

 


新增測試專案

加入一個新的Winform專案

SNAGHTML39df9fa

 

然後再新增的Winform專案裡加入服務參考

SNAGHTML3a4f375

 

把剛剛的網址貼上,然後按下GO

http://localhost:11945/WCFServiceLib/Service.svc?wsdl

SNAGHTML3a42464

 

 

把WCF加入參考

SNAGHTML3a65dbc

 

 

然後我在Form上新增一個按鈕,呼叫我剛剛寫的GetHello

SNAGHTML3a9b1b5

 

設定Winform為啟動專案,按下F5,按下按鈕

SNAGHTML3ab8336

 

 

如此一來,一隻簡單的裝載於IIS的WCF就完成了。

 

 

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo