オープンソースミドルウェア

ESB(エンタープライズサービスバス)はWebサービスだけでなくJMSやSMTPなどのメッセージングを仲介するミドルウェアです。

 各ベンダーのセミナーで概念的なことは聞いていましたが、実際にどのように動くのかのイメージがつかめませんでした。MuleオープンソースのESBがあってサンプルを動かしてかなりイメージが出てきました。

 Muleでは処理を実際に行うコンポーネント同士をどうつなぐかを設定ファイルに記述してメッセージの仲介をします。
 以下は標準入力からタイプされた文字列を単に返すだけのコンポーネントをつなぐだけの設定ファイルです。

< model name="echoSample" >
< mule-descriptor name="EchoUMO"
inboundEndpoint="stream://localhost"
outboundEndpoint="stream://localhost"
implementation="org.mule.components.simple.EchoComponent" >
< inbound-router >
< endpoint address="axis:http://localhost:8081/services"/>
</inbound-router >
< /mule-descriptor >
< /model >

Echocomponentというのが実際に処理を行うモジュールでinboundが入力元、outboundが出力先を指定しています。(stream::localhostはコンソール入出力の意味)
さらにinbound-routerというのでWebサービスの入力も受け付ける設定になっています。

 これはかなり使えます。コンポーネントをひとつ作るだけで標準入出力やWebサービス、JMSのメッセージも受け取れるようになります。またプログラムをコンポーネント化することにより再利用が進むと思われます。
 トランザクションなどが必要なやり取りもESBに任せることができるためアプリ開発の負荷が低減すると思います。

 これとは別にMantarayという面白いミドルウェアもあります。これもオープンソースP2Pでメッセージのやり取りを行うことができます。JMSが基本のようですが、まだよく見ていないので他の方法でもできるかもしれません。チャットやファイル転送などのサンプルがありましたがリアルタイム性が必要なアプリに向いていそうです。

 昔はオープンソースというと製品のコピーがほとんどでしたが、いまやオープンソースの方が進んでいることが多くなりました。これからは企業が秘密にして作るのではなく開発段階からオープンにしていろんな人を巻き込むパターンが多くなるのではないでしょうか。