クライアント(n):サーバ(1)
のような関係の場合、サーバーに対してコールが一度に複数発生すると思いますが、サーバからのレスポンスはクライアントを一意に認識して完全に適切な場所にメッセージを返すことはできるのでしょうか?
HTTPトランスポートを使用すればREQ/RESがセットで行えると書いてあるのですが、複数クライアントに対する対応の例というか説明があれば嬉しいです。宜しくお願いします。
※URLダミーです。
あまり自信がないのですが、ご参考に。。。
> サーバからのレスポンスはクライアントを一意に認識して完全に適切な場所にメッセージを返すことはできるのでしょうか?
できます。
と言うか、それができなければ実用性が全くありませんし。。。
普通にWebブラウジングしていることをイメージすれば良いと思います。
mawamitsuさんがWebブラウジングしていて、他の人が見ているWebサイトが誤って表示される、
なんてことはないですよね?
その辺はWebサーバがよろしくやってくれているはずです。
仕組みについては私も詳細はわからない(と言うかWebサーバ、アプリケーションサーバ内部の作りによると思う)のですが、
恐らくはおおむね以下のような動作になっていると思います。
①クライアントAがサーバにSOAPメッセージを投げる
②クライアントBがサーバにSOAPメッセージを投げる
③サーバが①を受取り、スレッドAを割り当てる。
④スレッドAは、クライアントAからのSOAPメッセージを解析し、処理を実行する。
⑤サーバが②を受取り、スレッドBを割り当てる。
⑥スレッドBは、クライアントBからのSOAPメッセージを解析し、処理を実行する。
⑦スレッドAは、処理を完了し、クライアントAにレスポンスを返す。
⑧スレッドBは、処理を完了し、クライアントBにレスポンスを返す。
要は、リクエスト毎にスレッドが割り当てられて処理が実行される。
スレッドは互いに独立しているので、どこにレスポンスを返せばよいのかもわかる。
と言うことだと思います。
本当に助かります。ありがとう御座います。
開発者が意図的にユニークなID等のハンドルを持たせるようなコーディングを行う必要が特に無いということでしょうか?宜しくお願い致します。