2009-07-30 23 views
6

Windows上にJavaプロセスを開始するC++アプリケーションがあります。これらの2つのアプリは、(xmlのスニペットを介して)互いに通信する必要があります。Windows OS環境のC++アプリケーションとJavaアプリケーション間のプロセス間通信

どのプロセス間通信方法を選択するのですか?その理由は何ですか?

私たちのためのテーブルのメソッドは:共有ファイル、パイプとソケット(これはいくつかのセキュリティ上の懸念があると思うが)です。私は他の方法にもオープンです。

答えて

9

ソケットベースの通信にセキュリティ上の問題があると思われる理由はわかりません(SSLを使用してください)。よく定義された通信プロトコルがあると仮定すると、それは言語アグノスティックであるので、しばしば非常に良いアプローチです。たとえば、Googleのprotocol buffersをご覧ください。必要なJavaクラスとストリームを生成します。

私の経験では、ファイルシステム(特にネットワークファイルシステム)は、必ずしも同調しないような通信には適していません。メッセージ(キャッシュの問題により、ファイルがターゲットで取得されない例えばプロセス)。

メッセージングレイヤー(AMQまたはTibcoなど)がありますが、セットアップには管理上のオーバーヘッド(および専門知識)が必要になる可能性があります。

個人的には、柔軟性とシンプルさのために純粋なソケットアプローチを選択します。あなたは完全なコントロールでになります

+0

あなたの要点は、ソケットとセキュリティに関するものです。ありがとう。 +1 –

1

Iceはかなりクールです:)私はC#とクロスプラットフォームのC++アプリケーション間の通信のための名前付きパイプを使用して、良い結果が、何もなかったしました

3

。そのソケットを禁止するのは間違いなく道のりです。

2

ソケットが素敵です。それらは、各コンポーネントの周りにブラックボックステストレイヤーを非常に簡単に作成するだけでなく、各コンポーネントをそれ自身のマシン上で実行することもできます。

セキュリティは間違いなく重要ですが、重要性に応じてさまざまなオプションがあります。 SSL、カスタムハンドシェイク、パスワードで保護されたログイン、ファイアウォールを使用すると、セキュリティを保護することができます。

編集: 私はお勧めしますが、JNIを使​​用して共有メモリもあります。それはあなたのリストにないので、私はそれを言及したいと思った。

関連する問題