web-dev-qa-db-ja.com

Webサービスが非同期であるとはどういう意味ですか?

Webサービスが非同期であるとはどういう意味ですか?これは、Ajaxで呼び出すときにのみ使用され、Webサービスが完了すると更新されるページの一部がありますか?ありがとうございました。

23
johnny

問題は、非同期のWebサービスなのか、それともアクセスできるのかということです。 Webページのコンテキストでは、サービスは同期的である可能性が高くなりますが、非同期的にアクセスされています。

おそらく、サービスはAJAX経由で呼び出されています。サービスへの呼び出しが行われ、ページが続行されます。応答が到着すると、成功または失敗のいずれかの関数が非同期で実行されます。

10
John Saunders

これは古いトピックですが、Webサービスが同期か非同期かはWebサービスの設計に依存し、Ajaxとは関係ありません。非同期Webサービストランザクションは次のように進行します。

  1. クライアントはWebサービスを呼び出します。呼び出しでは、クライアントは、クライアントによってサービスとして実装されたコールバックエンドポイントを送信します。
  2. Webサービスは「メッセージ受信」応答を返します。 ...(他の処理が発生する)...
  3. Webサービスはタスクを完了し、クライアントが提供するコールバックエンドポイントを呼び出します。
  4. クライアントコールバックは、受信したメッセージで応答します。

非同期Webサービスの開発 または 方法:非同期Webサービスメソッドの作成 を参照してください

71
Donald

同期とは、Webサービス(または関数など)を呼び出して、それが戻るまで待つことを意味します。呼び出しが戻るまで、他のすべてのコード実行とユーザー操作は停止します。非同期とは、Webサービス呼び出しが戻るのを待っている間、他のすべての操作を停止しないことを意味します。他のコードが実行されたり、ユーザーがページ(またはプログラムUI)と対話し続けることができます。

したがって、Webサービス自体が非同期であるとは言いません。サービスへのajax呼び出しは非同期であると言います。

12
Ray

同期Webサービスを呼び出すと、サービスはリクエストを処理し、HTTPステータスコード200 OK(1)を返します。すべてが期待通りに進んだ場合、またはエラー4xx。呼び出しは処理中および要求中にブロックされ、かなりの時間がかかる場合があります。

Webサービスが非同期の場合の主な違いは、呼び出しがHTTP 202 ACCEPTED(2)で即座に返されることです。つまり、要求はキューで取得されますが、まだ処理されません。

(1)200 OK http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1
(2)202 ACCEPTED http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.

10
Anssi

非同期Webサービスを使用すると、クライアントは要求を送信し、要求を処理し、一定時間後にクライアントに応答できます。クライアントは、応答の受信時にすべてのアクティビティをブロックしません。

それに比べて、同期的なWebサービスはクライアントに直接応答を提供し、応答が返されるまでクライアントがすべてのアクティビティをブロックすることを期待します。この場合、Webサービスはクライアントがリクエストを1つずつ処理するように制限します。

4
bn.