OperationContractAttribute.AsyncPattern プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
サービス コントラクト内の 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
プロパティ値
true
Begin
<
methodName>method が End<methodName> メソッドと一致し、サービス インターフェイス上の非同期メソッド ペアとして実装される操作としてインフラストラクチャによって処理できる場合はfalse。 既定値は、false です。
例
次のコード例は、 Add の同期バージョンと非同期バージョンの両方を含むサービス コントラクトへのクライアント チャネルを示しています。 コントラクト インターフェイスがクライアントで使用されている場合、 BeginAdd 操作と Add 操作の両方で、同期可能または無効なメソッドがサーバー上で呼び出されます。 コントラクトを使用してサービスを実装する場合、既定では、受信要求が同期メソッドにディスパッチされます。
[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 は、受信メッセージを Begin<methodName> メソッドに自動的にルーティングし、 End<methodName> 呼び出しの結果を送信メッセージにルーティングします。 そのため、クライアント チャネルは、メソッド ペアを 1 つの同期操作として、または非同期操作のペアとして表すことができます。 いずれの場合も、クライアント表現はサーバー上の非同期実装に影響を与えません。
クライアント コントラクトでは、 AsyncPattern プロパティを使用して、クライアントが非同期的に操作を呼び出すために使用できる非同期メソッドペアを示すことができます。 通常、クライアント アプリケーションは ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) ツールと /async オプションを使用して、 Begin<methodName> と End<methodName> メソッドのペアを生成し、クライアントが非同期的に操作を呼び出すことができます。
注
サービス操作に非同期バージョンと同期バージョンの両方がある場合、サービスの既定の動作は同期バージョンを呼び出すことです。