web-dev-qa-db-ja.com

WCFサービスを非同期で呼び出す方法

Windowsサービスから呼び出すWCFサービスがあります。

WCFサービスはSSISパッケージを実行しますが、そのパッケージが完了するまでに時間がかかる場合があり、Windowsサービスが完了するまで待機する必要がないようにしたいと思います。

WCFサービス呼び出しを非同期にするにはどうすればよいですか? (またはデフォルトで非同期ですか?)

25
Blankman

MSDNの以下の記事ですべてのニーズが満たされます。

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

WCFサービス非同期の呼び出し

サービス契約の設計

27
Perpetualcoder

Visual Studio 2010では、Add Service Reference > click Advanced button > check the Generate Asynchronous Operationsチェックボックス。

そうすると、非同期操作が追加され、使用できるようになります。

13
Bahamut

サービス側:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    bool DoWork(int i);
}

クライアント側:

[ServiceContract(Name = nameof(IMyService))]
public interface IMyServiceClient : IMyService
{
    [OperationContract]
    Task<bool> DoWorkAsync(int i);
}
9
Stas BZ

クライアント(Windowsサービス?)内のWCFプロキシは、非同期操作を利用可能にするために、作成時に指定する必要があります。

既存のWCFプロキシを修正するには、右クリックして[サービス参照の構成]を選択します。ここから、[非同期操作の生成]の横にあるチェックボックスをオンにするだけです。

OK、それがWCFプロキシ側の処理です。次に、クライアント内でプロキシを使用してAPM(非同期プログラミングモデル)を使用する必要があります。

2
Andrew Harry