SOAPについての質問です。

クライアント(n):サーバ(1)
のような関係の場合、サーバーに対してコールが一度に複数発生すると思いますが、サーバからのレスポンスはクライアントを一意に認識して完全に適切な場所にメッセージを返すことはできるのでしょうか?
HTTPトランスポートを使用すればREQ/RESがセットで行えると書いてあるのですが、複数クライアントに対する対応の例というか説明があれば嬉しいです。宜しくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:F57PB No.1

回答回数86ベストアンサー獲得回数0

ポイント40pt

※URLダミーです。


あまり自信がないのですが、ご参考に。。。


> サーバからのレスポンスはクライアントを一意に認識して完全に適切な場所にメッセージを返すことはできるのでしょうか?

できます。

と言うか、それができなければ実用性が全くありませんし。。。


普通にWebブラウジングしていることをイメージすれば良いと思います。

mawamitsuさんがWebブラウジングしていて、他の人が見ているWebサイトが誤って表示される、

なんてことはないですよね?

その辺はWebサーバがよろしくやってくれているはずです。


仕組みについては私も詳細はわからない(と言うかWebサーバ、アプリケーションサーバ内部の作りによると思う)のですが、

恐らくはおおむね以下のような動作になっていると思います。


①クライアントAがサーバにSOAPメッセージを投げる

②クライアントBがサーバにSOAPメッセージを投げる

③サーバが①を受取り、スレッドAを割り当てる。

④スレッドAは、クライアントAからのSOAPメッセージを解析し、処理を実行する。

⑤サーバが②を受取り、スレッドBを割り当てる。

⑥スレッドBは、クライアントBからのSOAPメッセージを解析し、処理を実行する。

⑦スレッドAは、処理を完了し、クライアントAにレスポンスを返す。

⑧スレッドBは、処理を完了し、クライアントBにレスポンスを返す。


要は、リクエスト毎にスレッドが割り当てられて処理が実行される。

スレッドは互いに独立しているので、どこにレスポンスを返せばよいのかもわかる。

と言うことだと思います。

id:mawamitsu

本当に助かります。ありがとう御座います。

開発者が意図的にユニークなID等のハンドルを持たせるようなコーディングを行う必要が特に無いということでしょうか?宜しくお願い致します。

2006/01/12 15:22:56
  • id:F57PB
    Re: SOAPについての質問です。

    > 開発者が意図的にユニークなID等のハンドルを持たせるような
    > コーディングを行う必要が特に無いということでしょうか?
    1つのSOAPメッセージのやり取りにおいては、必要ないと思います。
    (クライアント-サーバ間のやり取りが、リクエストスコープの場合)

    ただ、SOAPメッセージが複数にまたがる場合。。。
     1つ目のSOAPメッセージで前処理をして
     2つ目のSOAPメッセージで主処理をする
    のような場合は、2つのSOAPメッセージが同一クライアントからのもの
    であることを識別するIDのようなものが必要になる気がします。
    (クライアント-サーバ間のやり取りが、セッションスコープの場合)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません