2016-09-16 7 views
1

私はWCF 4.6.1でAPIを書いています。クライアントは私が書いたものではなく、必ずしも.NETにあるとは限りません(どの言語/プラットフォームでも構いません)。WSDLには非同期Webメソッドの概念がありますか?

時間がかかることがある何かをするWebメソッドがあります。そのため、クライアントに非同期に呼び出すよう勧めます。私は、クライアントが非同期(スレッドなど)としてWebメソッドを扱うように記述できることを知っていますが、実際のWebサービスを非同期操作として「強制」する方法はありますか?つまり、WSDLに「これは非同期メソッドです」と言うことがありますか?

答えて

1

WSDLに「これは非同期メソッドです」と言う方法がありますか?

いいえ。その呼び出しが行われている間にクライアントスレッドがブロックしなくても、クライアントとサービス間の通信は同期しています。つまり、呼び出しは非同期で、Webサービスメソッドが非同期ではありません。

特定の操作で応答が生成されるのが遅いため、別のスレッドを使用することをお勧めします。クライアントを構築し、Webサービスとの統合をテストする必要があります。開発者は応答が遅いことに気付き、彼らは非ブロッキングの方法でコールを行う必要があるかどうかを決定します。ブロッキングでさえそれらの解決策になるかもしれませんが、他には遅いと考えているものは何の問題もないかもしれません。

クライアントが応答をブロックしないようにするには、クライアントがコールバックエンドポイントを提供するWS-Addressing(ここではSOAP WebサービスにWCFを使用していると仮定しています)を使用します。応答が準備できたら呼び出すことができます。これは、受信エンドポイントを今必要とするため、クライアントを少し複雑にします。しかし、クライアント開発者は、WS-Addressing仕様を実装するのではなく、サービスをどのように呼び出すか(ブロッキング/非ブロッキングの方法で)を選択することを好むかもしれません。

関連する問題