同じシステムまたは異なるシステムで実行されている言語や環境間で使用できるプロセス間通信機能を探しています。たとえば、Java、C#、C ++コンポーネント間でシグナルを送信できるようにする必要があります。また、ある種のキューイングメカニズムもサポートする必要があります。明らかに環境や言語に依存しない唯一の機能はファイルですが、これは遅すぎると思います。また、統制のとれたキューイングを実装するのは難しいかもしれません。文献に記載されている他の機能の多くは、1つの言語または1つのオペレーティングシステムにのみ適用されます。提案をいただければ幸いです!
6 に答える
異種アーキテクチャについて話す場合、IMHOトランスポート層(「ソケット」を回答としてマークした場合)は、プロトコル層(データのシリアル化など)と同じくらい重要です。
私が見つけたのは、時間の経過とともに、さまざまなプログラミング言語、オペレーティングシステム、およびアーキテクチャ(ビッグエンディアン/ローエンディアン、16/32/64ビットなど)間でデータのシリアル化を統合するプログラミングライブラリを学習することです。
私のお気に入りの選択肢は、C ++、Python、Java、およびサードパーティのアドオンをサポートし、大量のプログラミング/スクリプト言語(Lua、Matlab、Ruby、Perl、R、Phpなど)をサポートするGoogleProtocolBuffersです。 OCaml、Mercury、Erlang、Go、D、Lisp)およびRPC実装(Zeroc ICEなど)。リストから、 SWI-Prolog Google ProtocolBuffersLibraryのような他の多くの製品がそれらをサポートしています。
別の方法は、さまざまなプログラミング言語もサポートするThriftです。
比較のために、Thrift vs ProtobufvsJSONを確認することをお勧めします。
おそらくActiveMQのようなものを見る必要があります。EAIパターンでは、JMSバスは、複数の異なる言語で記述され、複数のシステムで実行される複数のモジュールを統合する目的で頻繁に使用されます。私にとって、ActiveMQのようなエンタープライズメッセージバスはあなたのニーズに合っています。他に何かお探しの場合はお知らせください。
-シャミック
さて、あなたは間違いなく「ソケット」の使用を見ることができます。
個人的にはXML-RPCを使用します。複数のプラットフォームで簡単に使用でき、すべての要件を完全に満たすため、任意のキューイングをプログラムで処理できます。
Microsoftメッセージキューまたは類似のものをチェックしてください。XML-RPC、SOAP、JSONなどもご覧ください。
私の賭けはDBus[ピアツーピア]にあります-これはより良いフロー制御を持っています。RPC上で実行されるため、多くの言語バインディングがあります。もちろん、RPCはローカルソケットの上に構築されています。