方法 : 非同期サービス操作を実装する
Windows Communication Foundation (WCF) アプリケーションでは、クライアントに呼び出し方法を指示することなく、サービス操作を非同期的または同期的に実装できます。たとえば、非同期サービス操作を同期的に呼び出すことも、同期サービス操作を非同期的に呼び出すことも可能です。クライアント アプリケーションから操作を非同期で呼び出す方法を示す例については、「方法 : WCF サービス操作を非同期に呼び出す」を参照してください。同期操作および非同期操作詳細については、 、「サービス コントラクトの設計」および「同期操作と非同期操作」を参照してください。
非同期サービス操作の実装
サービス コントラクトで、.NET 非同期デザイン ガイドラインに従って非同期メソッドのペアを宣言します。Begin メソッドは、パラメータ、コールバック オブジェクト、状態オブジェクトを受け取って System.IAsyncResult を返し、組になる End メソッドは System.IAsyncResult を受け取って戻り値を返します。非同期呼び出しの詳細については、「Asynchronous Programming Design Patterns」を参照してください。
非同期メソッド ペアの Begin メソッドを System.ServiceModel.OperationContractAttribute 属性を使用してマークし、System.ServiceModel.OperationContractAttribute.AsyncPattern プロパティを true に設定します。たとえば、次のコード例では手順 1. と 2. を実行します。
非同期デザインのガイドラインに従って、Begin/End メソッド ペアをサービス クラスに実装します。たとえば、次のコード例では、非同期サービス操作の Begin および End の両方の部分の文字列がコンソールに書き出され、End 操作の戻り値がクライアントに返される実装を示します。コード例全体については、「使用例」を参照してください。
例
このコード例では次のものが示されます。
- 次の操作とのサービス コントラクト インターフェイス
- 同期
SampleMethod
操作 - 非同期
BeginSampleMethod
操作 - 非同期
BeginServiceAsyncMethod
/EndServiceAsyncMethod
操作のペア
- 同期
- System.IAsyncResult オブジェクトを使用したサービスの実装