Share via


方法 : 一方向コントラクトを作成する

ここでは、一方向コントラクトを使用するメソッドを作成するための基本手順を示します。このようなメソッドは、Windows Communication Foundation (WCF) サービスの操作をクライアントから呼び出しますが、応答を待ちません。この種のコントラクトは、たとえば、多数のサブスクライバーに対して通知を発行するために使用できます。一方向コントラクトは、二重のコントラクトを作成する場合にも使用できます。その場合は、クライアントとサーバーが互いに独立して通信できるため、どちらからでも相手の呼び出しを開始できます。これにより、特にサーバーは、クライアントがイベントとして処理できる一方向の呼び出しをクライアントに対して実行できます。一方向メソッドの指定の詳細については、IsOneWay プロパティおよび OperationContractAttribute クラスのトピックを参照してください。

双方向コントラクト用のクライアント アプリケーションを作成する方法詳細情報、「方法 : 一方向コントラクトと要求/応答コントラクトを使用して WCF サービスにアクセスする」を参照してください。実際に動作するサンプルについては、「一方向」を参照してください。

一方向コントラクトを作成するには

  1. サービスにより実装されるメソッドを定義するインターフェイスに ServiceContractAttribute クラスを適用することにより、サービス コントラクトを作成します。

  2. OperationContractAttribute クラスをメソッドに適用する際に、クライアントが呼び出すことのできるインターフェイスのメソッドを指定します。

  3. IsOneWay プロパティを true に設定することにより、出力を行わない (戻り値および出力または参照パラメーターを持たない) 一方向の操作を指定します。IsOneWay プロパティの既定値は false であるため、OperationContractAttribute クラスを持つ操作では、既定で要求/応答コントラクトが満たされることに注意してください。したがって、このメソッドに一方向コントラクトが必要な場合は、この属性プロパティの値を明示的に 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();
}

参照

処理手順

方法 : Windows Communication Foundation サービス コントラクトを定義する
セッション
方法 : 双方向コントラクトを作成する

リファレンス

ServiceContractAttribute
OperationContractAttribute

概念

サービスの設計と実装