WCF基礎知識

一:WCF基本定義要素
1,ServiceContract服務約定介面,介面中定義操作約定(即客戶端可以調用的方法)。

/// <summary>
/// 服務約定
/// </summary>
[ServiceContract]
public interface IUserService
{
//操作約定
[OperationContract]
string ShowName(string name);
}

2,服務約定介面的實現類。

public class UserService : IUserService
{
public string ShowName(string name)
{
return “WCF 服務”;
}
}

3,如果是雙工模式,需要定義CallbackContract回調約定介面。

/// <summary>
/// 服務約定
/// </summary>
[ServiceContract(CallbackContract = (typeof(IDongCallBack)))]
public interface IUserService
{
//操作約定
[OperationContract]
string ShowName(string name);
}

/// <summary>
/// 回調約定
/// </summary>
public interface IDongCallBack
{
[OperationContract(IsOneWay = true)]
void GetName(string name);
}

3.1:服務端定義服務約定和實現,並聲明回調約定介面,回調由客戶端實現。例如:服務約定IUservice,實現UserService,回調約定,ICallBack
3.2:客戶端需要知道服務約定,並實現回調約定。服務端需要知道IUservice服務介面定義,需要知道ICallback定義,並實現Callback

二,WCF通訊的三種模式
1,請求/應答模式,這是WCF默認的通訊模式。
2,單向模式, 使用 IsOneWay=true 標記的操作不得聲明輸出參數、引用參數或返回值。只能是void類型返回,可以傳入參數,不能傳出參數。

/// <summary>
/// 服務約定
/// </summary>
[ServiceContract]
public interface IUserService
{
//操作約定
[OperationContract(IsOneWay = true)]
void ShowName(string name);
}

3,雙工模式,雙工模式建立在答覆模式和單向模式的基礎之上,實現客戶端與服務端相互的調用。
支援回調的綁定有4種:WSDualHttpBinding、NetTcpBinding、NetNamedPipeBinding、NetPeerTcpBinding。

四,WCF調用的2種方式
1,引用服務生成代理對象,調用服務的Client對象方法。
2,使用程式碼自定義代理對象,但需要保證Endpoint(終結點)完全一致。Enpoint包含Address(發布的地址),binding方式,contract契約(服務介面定義)。

五,WCF中常用的binding方式

BasicHttpBinding: 用於把 WCF 服務當作 ASMX Web 服務。用於兼容舊的Web ASMX 服務。
WSHttpBinding: 比 BasicHttpBinding 更加安全,通常用於 non-duplex 服務通訊。
WSDualHttpBinding: 和 WSHttpBinding 相比,它支援 duplex 類型的服務。
WSFederationHttpBinding: WS-Federation 安全通訊協議。
NetTcpBinding: 使用 TCP 協議,用於在區域網(Intranet)內跨機器通訊。有幾個特點:可靠性、事務支援和安全,優化了 WCF 到 WCF 的通訊。限制是服務端和客戶端都必須使用 WCF來實現。
NetNamedPipeBinding: 使用命名管道進行安全、可靠、高效的單機服務通訊方式。
NetMsmqBinding: 使用消息隊列在不同機器間進行非連接通訊。
NetPeerTcpBinding: 使用 P2P 協議在多機器間通訊。
MsmqIntegrationBinding: 將 WCF 消息轉化為 MSMQ 消息,使用現有的消息隊列系統進行跨機器通訊。

六,WCF常用的的幾種寄宿方式
1,控制台寄宿,使用ServiceHost服務主機,給主機添加AddServiceEndpoint(服務終結點),包含終結點的協定類型,binding綁定協議,address終結點地址。

2,IIS寄宿,直接發布到IIS。

3,Windows服務寄宿和控制台寄宿類似,使用ServiceHost創建服務。

4,Winform程式寄宿。

Tags: