ESBを必要とするシーン

2006年7月24日(月)
高安 厚思

サービスのトランスポートを抽象化する場合

   ESBはサービス本体が実装しているトランスポート(SOAP/JMS/IIOP)に関わらず、他のトランスポートを利用して呼び出すこともでき る。そのためサービスを抽象化して、トランスポートに関係なくサービスを利用したい場合は、ESBを利用したほうがよい。


サービスの組み合わせをメディエーションする場合

   第1回で解説した疎結合のレベル3を実現するためには、粒度の細かいサービスを組み合わせて、粒度の大きなサービスを提供する必要がある。この場合は後で説明するESBのメディエーション機能を利用すると便利であるため、ESBを利用するとよい。

   またESBは、メッセージの粒度を大きくして処理するため、メッセージ全体をPOJOにマッピングするのではなく、必要に応じてメッセージの一部をPOJOにマッピングするといった特徴がある。

   このことは必ずしもSOAがESBを必要としていることを示しているのではなく、サービスの粒度を大きくして疎結合にするためにはESBが適していることを示している。

ESBが持つ機能

   WebサービスとESBの違いを解説してきたが、ESBのプロダクトは表2に関するすべての機能を持っているとは限らない。そこで、ESBのプロダクトが一般的に持っている機能を以降より解説する。

サービス実行

   これは、リクエストがエンドポイントに到達した際にマッピングされたサービスを実行する機能である。このサービスは、リクエストやエンドポイントに依存しないように作成され、マッピングや形式の変換(ESBの独自形式)などはESB側が行う。



サービス実行の流れ
図2:サービス実行の流れ

   なおこのサービスは、ESB固有のAPIやインターフェースなどを利用して実装されるが、AOPやアノテーション技術を組み合わせて、POJOをサービスの実装とするESBプロダクトも存在している。

   また、サービスとエンドポイントの間にサービスの実行用のコンテナ(サービスエンジンとも呼ばれる)を動的に挟み込むことで、サービスの呼び出しの 前後に機能を追加することができるようになる。このことでWebサービスセキュリティの呼び出しなどが宣言的に行えるようになる。

複数のトランスポートサポート

   サービスの予期しているトランスポート以外のトランスポートを呼び出すことができる機能が、複数のトランスポートサポートである。ここでいうトラン スポートとは、サービスの呼び出しを行うプロトコルのことを意味しており、SOAP/JMS/IIOPなどにあたる。

   一般的なWebサービスエンジンは、SOAPによる呼び出ししかサポートしておらず、Webサービスを受けるクライアントが他のシステムとJMSでやり取りしていても、このサービスを呼び出すためにはSOAPで呼び出さなければならないのとは対照的である。

   なお、SCA(Service Component Architecture)のEntryPointやJBIのBC(Binding Component)はこのトランスポートサポートを実現している。

株式会社オープンストリーム テクニカルコンピテンシーユニット 主管システムズアーキテクト

横浜国立大学経営学部卒。銀行系シンクタンクでオブジェクト指向技術の研究に携わった後、大手SIerにて アーキテクチャ構築、プロセス研究に携わった。現在株式会社オープンストリームにてSOAを中心とする研究開発およびアーキテクチャ構築に従事。最近は XMLのダイナミックさに魅了されている。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています