BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JNBridgePro 6.0がクラウド上のJavaと.NETアプリを接続

JNBridgePro 6.0がクラウド上のJavaと.NETアプリを接続

ブックマーク

原文(投稿日:2011/05/28)へのリンク

JNBridgeは相互運用ツールを改善してクラウド上、あるいは地上とクラウド上にデプロイされているJavaと.NETアプリケーション間のネイティブなコミュニケーションを可能にした。

JNBridgeProはJavaコードから.NETアプリケーションへ、そして.NETコードからJavaアプリケーションへアクセスすることができる。Javaと.NETコンポーネントは同じプロセスで走ることができ、共有メモリを介して通信したり、あるいは同じマシン内で、あるいはネットワークを跨いでTCP/IPで通信でき、クラウド内で HTTP/SOAPによって通信できる。相互運用は以下のやり方で実現されている。全Javaクラス向けの .NETプロキシを作り、C#, VB.NET, VC++や他の.NET言語で書かれた.NETプログラムはこのプロキシにアクセスする必要があり、逆方向には、.NETクラスに必要なJavaプロキシを作成している。この目的のために、 JNBridgeProにはスタンドアローンのGUIがあり、この2種類のプロキシを作成できる。Javaプロキシ用の Visual Studioプラグインと.NETプロキシ用の代替のEclipseプラグインがある。

JNBridgeProは相互運用性に必要な全ての面倒を見る。すなわちマーシャリング/アンマーシャリング オブジェクト、データ型変換、クロスプラットフォーム例外処理、ガーベッジコレクションである。フレームワークはプロキシされるクラスのソースコードは不要で、バイナリさえあればよい。.NETコードはCLR上で、JavaコードはJVM上で走る。コードをクロスプラットフォーム向けに再コンパイルする必要はない。

ツールは前からあり、正確には2002年からあるので、新しくはないが、最新バージョンはクラウドにデプロイされたアプリケーション間で相互運用できるようになった。あらゆる通信シナリオが可能である。すなわち、イントラ-クラウド、クラウド間、地上からクラウド、クラウドから地上、あるいはこれらの組合せ。以下に図で説明されている。

image

インターネットを至る所で、 JNBridgeProはHTTP とSOAPを使ってコンポーネント間で、通信ができる。我々は JNBridgeのCTOである Wayne Citrin氏とこの相互運用ソリューションについて聞いた。

InfoQ: JNBridgeのクロスプロセス通信について説明していただけませんか?あるサービスの特定のインスタンス同士を疎結合にするように、メッセージキューイングとwebサービスAPIを使ってもできるのではないですか?

Wayne Citrin: そうです。あるサービスの複数のインスタンスを疎結合にしたいと思ったら、メッセージキューイングとwebサービスAPIを使いたいと思うかもしれませんが、そのような「ステートレス」なサービスでも、複雑なリクエスト処理には複雑な中間状態が必要になってしまいます。そのようなサービスの内部には複数のコンポーネントがあり、そのあるものはJavaで実装され、またあるものは.NETで実装されています。それらをもっと密に結合して、ステートフルな方法で両者を結ぶほうがずっと適したやり方なのです。.NETやJavaベースのコンポーネントは同じインスタンス上の別々のプロセスで走ることができ、そのような場合、 JNBridgeProのメカニズムの方が疎結合なメカニズムよりずっと適切です。代わりとして、Javaと.NETはクラウドコンポーネント中の同じプロセスで走ることもできます。 JNBridgeProはこの場合も扱うことができます。

他の場合として、クラウド上のレガシーコードはメーッセージング対応やwebサービス対応にできませんし、これらのメカニズムを使ったりできません。 JNBridgeProはレガシーアプリケーションに変更を加えること無しに、クロスプラットフォーム/クロスプロセスをサポートするために使うことができます。またメーッセージングやサービス指向APIは大抵かなり限られたもので、ある特定のモジュールが直接のAPIを介して提供する全機能を見せるわけではありません。 JNBridgeProを使えばリッチなAPIの全てにアクセスできます。単一インスタンス、単一クラウド、あるいはクラウド間であろうが、通信スループットは通常のwebサービスやメーッセージングより早いでしょう。

最後に、webサービスAPIが使われている場合でさえ、全てのクラウドサービスが.NETベースとJavaベースの両クライアントスタブを提供しているわけではありません。そのような場合、特定のプラットフォーム用のクライアントスタブがない場合、webリクエストを直接生成するのではなく、他のプラットフォームのライブラリ使って、JNBridgeProのインプロセス 相互運用によって、クロスプラットフォームでそれにアクセスしたほうがずっと便利な場合があります。

この記事に星をつける

おすすめ度
スタイル

BT