次の方法で共有


方法 : 非同期サービス操作を実装する

Windows Communication Foundation (WCF) アプリケーションでは、クライアントに呼び出し方法を指示することなく、サービス操作を非同期的または同期的に実装できます。たとえば、非同期サービス操作を同期的に呼び出すことも、同期サービス操作を非同期的に呼び出すことも可能です。クライアント アプリケーションから操作を非同期で呼び出す方法を示す例については、「方法 : WCF サービス操作を非同期に呼び出す」を参照してください。同期操作および非同期操作詳細については、 、「サービス コントラクトの設計」および「同期操作と非同期操作」を参照してください。

非同期サービス操作の実装

  1. サービス コントラクトで、.NET 非同期デザイン ガイドラインに従って非同期メソッドのペアを宣言します。Begin メソッドは、パラメータ、コールバック オブジェクト、状態オブジェクトを受け取って System.IAsyncResult を返し、組になる End メソッドは System.IAsyncResult を受け取って戻り値を返します。非同期呼び出しの詳細については、「Asynchronous Programming Design Patterns」を参照してください。

  2. 非同期メソッド ペアの Begin メソッドを System.ServiceModel.OperationContractAttribute 属性を使用してマークし、System.ServiceModel.OperationContractAttribute.AsyncPattern プロパティを true に設定します。たとえば、次のコード例では手順 1. と 2. を実行します。

  3. 非同期デザインのガイドラインに従って、Begin/End メソッド ペアをサービス クラスに実装します。たとえば、次のコード例では、非同期サービス操作の Begin および End の両方の部分の文字列がコンソールに書き出され、End 操作の戻り値がクライアントに返される実装を示します。コード例全体については、「使用例」を参照してください。

このコード例では次のものが示されます。

  1. 次の操作とのサービス コントラクト インターフェイス
    1. 同期 SampleMethod 操作
    2. 非同期 BeginSampleMethod 操作
    3. 非同期 BeginServiceAsyncMethod/EndServiceAsyncMethod 操作のペア
  2. System.IAsyncResult オブジェクトを使用したサービスの実装

関連項目

概念

サービス コントラクトの設計
同期操作と非同期操作