エンタープライズ:ニュース 2003/05/13 01:29:00 更新


Webサービスをよりフレキシブルにするためには (2/6)

未定の相互作用

 また、非同期型のインタラクションはクライアントからレスポンス待ちを取り除くのだ。Webサービスのエンドポイントは計算や翻訳などを行うアプリケーションを代表するものである。非同期的にサービスへのリクエストを作るクライアントは、要求したWebサービスのインタラクションが完了していないうちに、ほかのタスクを実行することができる。これはスケーラビリティ向上に一躍買う。

 適切な粒度を持つRPCスタイルのインターフェースは、すべてのアプリケーションとサービスが、ほかのすべてのアプリケーション、およびサービスとコミュニケーションする必然性を持つ。また、それらはどのようにコミュニケーションするかという親密な関係を、お互いに知らなければならない。例えば成立のためのインターフェイスには、getQuantity() や getTotal()、getBillToAddress() といったメソッドを持つことになる。

 粗いドキュメントスタイルのインターフェイスにおいては、それぞれのアプリケーションとサービスが1つのXMLドキュメントのパッケージだけを参照する必要がある。そのXMLドキュメントのパッケージは、サービスを共有するほかのパーティとの間で必要な、すべての関連情報を内包する。さらに、幾つかのエンドポイントに向い、SOAPエンベロープのフォームで送信する。同じように、消費者向けのサービスの場合では、XMLドキュメントから関連するデータの一部分(例:<ShipTo> address)を選び、ピックアップする。適切な処理を行い、他の送信先に受け渡すのだ。このドキュメントスタイルに非同期インタラクションを加えた際、メッセージングスタイルのインボケーションに対するインターフェイスを持つことになるのだ。

Image2.gif

Figure 2■列の作成概念図。メッセージキューイングによるSOAPメッセージ配送は、非同期通信を達成することへのアプローチを提供する


 信頼性のある非同期型コミュニケーションに対する最も賢明なアプローチは、JMSを基本としたメッセージキューイングを利用することである。JMSはいまやスタンダードであり、アプリケーションで使用するAPIのコモンセットを提供するものだ。そして、堅牢なデリバリーの信頼性を保証するメッセージ・デリバリー・セマンティックのコモンセットでもある。JMSは、その機能と結合のルールを、アプリケーション・レイヤとは切り離された自分自身のレイヤの中にカプセル化する。トランスポートを必要とするJMSベースのメッセージングシステムを利用するアプリケーションは、どのようにメッセージが取得されるかなどの詳細に関しては参照されない特徴を持つ。SOAPメッセージは、図2のようにsenderとreceiverの間でキューイングされるわけだ。JMSプロバイダーは、すべての非同期的な要素であるメッセージパーシスタンスや、トランザクションの保全、受信のアクノーレッジメントの扱いに関して責任を持つ。

 J2EEアーキテクチャのダイアグラムでは、JMSは常にファイアウォールの内側に配置されるコンポーネントとして表示される。JSPサーブレットとメッセージドリブンビーン間では、非同期のメッセージを配信するものとされている。Webページを作成し、ミドルティアのビジネスロジックに接続するのであれば、このストラクチャは有効なユースケースといえるが、それがメッセージングを利用する唯一の方法という訳ではない。

 JMSメッセージングは、インターネット上でのSAOPなどのトランスポート・データに関する完璧なソリューションとなり得る。JMSのインプリメントとディプロイメントに関する詳細はベンダーによる。多くのJMSベンダーが、幾つかのトンネリング機能を提供しているのだ。例えば、SonicMQのケースでは、JMS-client-to-JMS-server トラフィックが、HTTPおよび、HTTPS、SSL、TCPソケットを利用したセキュアなスタイルで、ファイアウォールを潜り抜けインターネット上とやり取りすることができる。

前のページ | 1 2 3 4 5 6 | 次のページ

[David Chappell, Tony Hong,XML Magazine]