2

SOAP プロトコルを使用している場合、SOAP を使用して保留中のリモート関数呼び出しをキャンセルできますか?

次の 3 つの状況が見られます。

  • A) 完了するまでに時間がかかるサービスにリクエストを送信する。例えば、大量のファイルを含むディレクトリをコピーする場合、ファイルコピーのループを解除できますか?

  • B) 長いリストを返すリクエストを行う。たとえば、ユーザー名のメモリ内の大きなリストを照会する場合、このリスト応答の送信をキャンセルできますか?

  • C) まだ内部通話キューにある通話をキャンセルする。つまり、サーバーが処理を開始する前です。これは、短時間に多数の非同期呼び出しを発行した場合に発生する可能性があります。

4

1 に答える 1

3

クライアントの観点からは、同期(要求/応答)SOAP呼び出しをキャンセルすることは、他のHTTP呼び出しの場合と同じです。切断して、応答のリッスンを停止するだけです。適切に作成されたサーバーは、長い操作を続行する前にクライアントがまだ接続されているかどうかを確認し(たとえば、.NETではサーバーはIsClientConnectedを確認します)、接続されていない場合は操作をキャンセルする必要があります。

ただし、ペイロードを送信して切断しているため、この方法で片道通話をキャンセルすることはできません。一方向呼び出しをキャンセルするには、SOAPサービスのある種のキャンセルメソッドを明示的に呼び出す必要があります。これは明示的にサポートする必要があります。

于 2010-02-05T09:11:49.620 に答える