2012-01-15 20 views
1

私は既存のASP WebサービスにAsync Webメソッドを追加しようとしています。 私はSoapHttpClientProtocolとbegininvokeを使ってasyncメソッドを呼び出し、asynccallbackオブジェクトを渡します。非同期Web呼び出し - 必要な構成

私の質問は - クライアント/サーバーアプリケーションの設定を変更する必要がありますか?私はこの非同期呼び出しの仕組みを完全に理解していません - クライアントアプリケーションは応答待ちのポートを聞いていますか?もしそうなら、私はポートがクライアントマシン用のファイアウォールで開いていることを確認する必要がありますか?

ありがとうございました。

答えて

0

質問は少し細かいです。推論(この詳細の不足のために間違っている可能性があります)は、.NETクライアントがClassic ASPアプリケーションによって提示されたWebサービスを呼び出していることです。

SoapHttpClientProtocolのサブクラスでBeginInvokeを使用して、クライアントの視点から非同期呼び出しを行うことを検討しています。

私の推論が正しいということに基づいて、ASP Webサービスに特別なことをする必要はありません。サービスメソッドを通常どおり追加してください。実際には、既存の非同期呼び出しを検討する場合は、サーバー側のコードに何もしなくてもかまいません。 「非同期性」は、要求が完了したときにクライアントAPIがコールバックを実行する、クライアント側の手法です。

実際には、より複雑な非同期呼び出しよりも「人工的」であるため、同期呼び出しがどのように機能するかを理解する方がおそらくよいでしょう。何よりも最初にすべてのネットワークI/Oを実行するの操作が必要です非同期です。ある時点で、実行中のスレッドは、I/O操作が完了するまで(現代のCPUの観点から)永遠を待っている間は何もしません。

したがって、すべてのWebサービスは、設定やファイアウォールで特別なことをすることなく、実際には非同期になります。その典型的な開発者フレンドリーなapisはブロック現在のスレッドは、IOが完了し、しばしば機能の意味を使用します返信に応答します。

非同期呼び出しとの唯一の違いは、I/O操作が進行中であればスレッドがブロックされないことです。 I/O操作が完了すると、提供されたコールバックメソッドが呼び出されます。

関連する問題