質問は少し細かいです。推論(この詳細の不足のために間違っている可能性があります)は、.NETクライアントがClassic ASPアプリケーションによって提示されたWebサービスを呼び出していることです。
SoapHttpClientProtocol
のサブクラスでBeginInvoke
を使用して、クライアントの視点から非同期呼び出しを行うことを検討しています。
私の推論が正しいということに基づいて、ASP Webサービスに特別なことをする必要はありません。サービスメソッドを通常どおり追加してください。実際には、既存の非同期呼び出しを検討する場合は、サーバー側のコードに何もしなくてもかまいません。 「非同期性」は、要求が完了したときにクライアントAPIがコールバックを実行する、クライアント側の手法です。
実際には、より複雑な非同期呼び出しよりも「人工的」であるため、同期呼び出しがどのように機能するかを理解する方がおそらくよいでしょう。何よりも最初にすべてのネットワークI/Oを実行するの操作が必要です非同期です。ある時点で、実行中のスレッドは、I/O操作が完了するまで(現代のCPUの観点から)永遠を待っている間は何もしません。
したがって、すべてのWebサービスは、設定やファイアウォールで特別なことをすることなく、実際には非同期になります。その典型的な開発者フレンドリーなapisはブロック現在のスレッドは、IOが完了し、しばしば機能の意味を使用します返信に応答します。
非同期呼び出しとの唯一の違いは、I/O操作が進行中であればスレッドがブロックされないことです。 I/O操作が完了すると、提供されたコールバックメソッドが呼び出されます。