作法:建立單向合約

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

如需建立雙面合約用戶端應用程式的詳細資訊,請參閱操作說明:使用單面和要求-回覆合約存取服務。 如需實用範例,請參閱單面範例。

若要建立單向合約

  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)]
    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();
}
<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

另請參閱