共用方式為


HOW TO:建立單向合約

本主題說明的基本步驟可用來建立使用單向合約的方法。此類方法會從用戶端叫用 Windows Communication Foundation (WCF) 服務上的作業,但是不會期待收到回覆。例如,您可以使用此合約類型,將通知發行給許多訂閱者。您也可以在建立雙工 (雙向) 合約時使用單向合約,以供用戶端與伺服器彼此各自進行通訊,並方便任何一方初始化對另一方的呼叫。這麼做可以特別允許伺服器對用戶端進行單向呼叫,而用戶端會將此呼叫視為事件。如需指定單向方法的詳細資訊,請參閱 IsOneWay 屬性與 OperationContractAttribute 類別。

如需詳細資訊為雙工合約建立用戶端應用程式的詳細資訊,請參閱 HOW TO:使用單向和要求-回覆合約來存取 WCF 服務。如需實用範例,請參閱單向

若要建立單向合約

  1. ServiceContractAttribute 類別套用至用來定義服務要實作之方法的介面,以建立服務合約。

  2. 指出介面中可供用戶端叫用的方法,方法是將 OperationContractAttribute 類別套用到這些方法上。

  3. IsOneWay 屬性設為 true,以便將不得包含輸出的作業 (沒有傳回值,也沒有 out 或 ref 參數) 指定為單向。請注意,帶有 OperationContractAttribute 類別的作業預設都會滿足要求-回覆合約,因為 IsOneWay 屬性會預設為 false。因此如果您希望方法使用單向合約,就必須明確地將屬性值指定為 true

範例

下列程式碼範例定義包含數個單向方法的服務合約。所有的方法都具有單向合約,除了 Equals 以外,因為它會預設為要求-回覆,並傳回結果。

<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession

    <OperationContract(IsOneWay:=True)> _
    Sub Clear()
    <OperationContract(IsOneWay:=True)> _
    Sub AddTo(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub SubtractFrom(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub MultiplyBy(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub DivideBy(ByVal n As Double)
    <OperationContract()> _
    Function Equal() As Double
End Interface
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
    [OperationContract(IsOneWay=true)]
    void Clear();
    [OperationContract(IsOneWay = true)]
    void AddTo(double n);
    [OperationContract(IsOneWay = true)]
    void SubtractFrom(double n);
    [OperationContract(IsOneWay = true)]
    void MultiplyBy(double n);
    [OperationContract(IsOneWay = true)]
    void DivideBy(double n);
    [OperationContract]
    double Equals();
}

另請參閱

工作

HOW TO:定義 Windows Communication Foundation 服務合約
工作階段
HOW TO:建立雙工合約

參考

ServiceContractAttribute
OperationContractAttribute

概念

設計與實作服務