2010-11-19 22 views

答えて

5

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

ほとんどの場合、サービスはAJAX経由で呼び出されています。呼び出しがサービスに行われ、ページが次に続行されます。応答が到着すると、成功関数または失敗関数のいずれかが非同期で実行されます。

10

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

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

+0

正直、それは正しくないステートメントが言っているWebサービス自体は非同期ではありません – sowen

1

非同期Webサービスは、プロセスの要求を、クライアントが要求を提出することを可能にし、与えられた時間後にクライアントへの応答 - クライアントが応答を受信すると、すべての活動をブロックしないでしょう。

比較してみると、同期しているWebサービスは、応答が返されるまで、すべての活動をブロックするようにクライアントを期待し、応答を直接クライアントを提供することになります。この場合、Webサービスは要求を1つずつ処理するようにクライアントを制限します。

+0

-1:申し訳ありませんが、サービスは同期しているかではないが、かどうかは関係ありませんクライアントと関係があります。 –

+0

強いステートメントである「何も」を詳述しません。おそらく、あなたは何かを追加することがあります。あなたは「何か」を与えましたが、「なぜ」は与えませんでした。クライアントのないサーバーはそれほど有用ではありません。どのようにWebサービスがどのように動作し、消費できないのかを調べることで、Webサービス自体の仕組みを明らかにすることができます。 –

55

は、私は、これは古いトピックです知っているが、Webサービスが同期または非同期であるかどうかのWebサービスの設計に依存し、アヤックスとは何の関係もありません。非同期Webサービストランザクションは次のように行われます。

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

(1)すべてが期待される、またはエラー4xxのように行った場合は、あなたは、同期Webサービスを呼び出すと、サービスが要求を処理し、HTTPステータスコード200 OKを返すDeveloping Asynchronous Web ServicesHow to: Create Asynchronous Web Service Methods

+7

これが正解です... –

+0

はい、重要なポイント2.(要求が確認応答を受信)し、WSDLで指定する必要があります。3.コールバックエンドポイントは、あります。 ...これは本当にWSの側で異なる処理が必要なので...この@Donals応答は正しいものです –

6

を参照してください。コールは処理中および要求中にブロックされ、かなりの時間がかかります。

Webサービスが非同期である場合には主な違いは、その呼び出し要求がキューに運ばれたが、まだ処理されていないことを意味します(2)HTTP 202 ACCEPTEDで瞬時に返す必要があります。

(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.3

関連する問題