次の方法で共有


方法: 要求/応答コントラクトを作成する

要求/応答コントラクトは、応答を返すメソッドを指定します。 応答が送信され、このコントラクトの条件の下で要求に関連付けられる必要があります。 メソッドが応答を返さない場合 (C# の場合は void または Visual Basic の場合は Sub) でも、インフラストラクチャは、空のメッセージを作成して送信することで、メソッドが返ったことを呼び出し元に示します。 空の応答メッセージが送信されるのを防ぐには、操作で 1 方向コントラクトを使用します。

要求/応答コントラクトを作成するには

  1. 選択したプログラミング言語でインターフェイスを作成します。

  2. インターフェイスに ServiceContractAttribute 属性を適用します。

  3. クライアントが呼び出すことのできる各メソッドに OperationContractAttribute 属性を適用します。

  4. 任意。 IsOneWay プロパティの値を true に設定して、空の応答メッセージが送信されることを防止します。 既定では、すべての操作は要求/応答コントラクトです。

次のサンプルは、Add メソッドと Subtract メソッドを提供する電卓サービスのコントラクトを定義します。 Multiply メソッドは OperationContractAttribute クラスでマークされていないため、このコントラクトの一部ではありません。したがって、クライアントからはアクセスできません。

using System.ServiceModel;

[ServiceContract]
public interface ICalculator
{
    [OperationContract]
    // It would be equivalent to write explicitly:
    // [OperationContract(IsOneWay=false)]
    int Add(int a, int b);

    [OperationContract]
    int Subtract(int a, int b);

    int Multiply(int a, int b)
}
  • 操作コントラクトを指定する方法の詳細については、OperationContractAttribute クラスと IsOneWay プロパティに関するページを参照してください。

  • ServiceContractAttribute 属性と OperationContractAttribute 属性を適用すると、サービスを展開した後に Web サービス記述言語 (WSDL) ドキュメントでサービス コントラクト定義が自動的に生成されます。 ドキュメントは、サービスの HTTP ベース アドレスに ?wsdl を付け加えてしてダウンロードできます。 たとえば、http://microsoft/CalculatorService?wsdl のように指定します。

関連項目