次の方法で共有


OperationContractAttribute.AsyncPattern プロパティ

定義

サービス コントラクト内で Begin<methodName> メソッドと End<methodName> メソッドのペアを使用して、操作が非同期的に実装されることを示します。

public:
 property bool AsyncPattern { bool get(); void set(bool value); };
public bool AsyncPattern { get; set; }
member this.AsyncPattern : bool with get, set
Public Property AsyncPattern As Boolean

プロパティ値

truemethodName メソッドが methodName>> メソッドと<End一致し、サービス インターフェイスの非同期メソッド ペアとして実装される操作としてインフラストラクチャによって処理できる場合は 。falseそれ以外の場合は 。Begin< 既定値は、false です。

次のコード例は、Add の同期バージョンと非同期バージョンの両方を含むサービス コントラクトへのクライアント チャネルを示しています。 クライアント上でコントラクト インターフェイスが使用される場合、BeginAddAdd 操作はどちらも、メソッドをサーバー上で呼び出します。このメソッドは、同期である場合もそうでない場合もあります。 コントラクトを使用してサービスを実装した場合、既定では、受信要求が同期メソッドにディスパッチされます。

[ServiceContract]  
public interface IAddTwoNumbers  
{  
    // If the asynchronous method pair  
    // appears on the client channel, the client can call   
    // them asynchronously to prevent blocking.  
    [OperationContract (AsyncPattern=true)]  
    IAsyncResult BeginAdd(int a, int b, AsyncCallback cb, AsyncState s);  

    [OperationContract]  
    int EndAdd(IAsyncResult r);  

    // This is a synchronous version of the BeginAdd/EndAdd pair.  
    // It appears in the client channel code by default.   
    [OperationContract]  
    int Add(int a, int b);  
   }  

注釈

AsyncPattern プロパティを使用して、サーバー、クライアント、またはその両方で非同期に呼び出すことができるサービス操作を構築します。 AsyncPattern プロパティは、Begin メソッドに、.NET Framework 非同期メソッド設計パターンに準拠している一致 End メソッドがあることをランタイムに通知します。 サービス操作を実装したサーバー非同期メソッドを構築すると、サーバーのスケーラビリティとパフォーマンスが向上し、サービスのクライアントは影響がありません。このため、非同期に実行可能な、時間がかかる操作の実行後に、サービス操作がクライアントに何かを返す必要がある場合は、この処理を行うことをお勧めします。

サーバー上の非同期のメソッド ペアは、操作の基になる Web サービス記述言語 (WSDL) の説明に影響しないため、クライアントに影響が出ることはありません。 このようなメソッドは、メッセージと関連付けられたメッセージを含 <input> む単一の操作としてクライアントに <output> 表示されます。 WCF は、受信メッセージを methodName> メソッドに自動的にBegin<ルーティングし、methodName> 呼び出しのEnd<結果を送信メッセージにルーティングします。 したがって、クライアントのチャネルは、このメソッド ペアを単一の同期操作または非同期操作ペアのいずれかとして表現できます。 どちらの場合もクライアントの表現は、サーバー上の非同期実装にまったく影響を与えません。

クライアントのコントラクトは、AsyncPattern プロパティを使用して、クライアントが操作を非同期で呼び出すために使用できる非同期のメソッド ペアを示すことができます。 通常、クライアント アプリケーションは ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) ツールと オプションを/async使用して、クライアントが操作を非同期的に呼び出すために使用できる methodName> メソッドと End<methodName> メソッドペアを生成Begin<します。

Note

サービス操作に非同期バージョンと同期バージョンがある場合、サーバー上の既定の動作は同期バージョンの呼び出しです。

適用対象