2011-11-23 9 views
7

2つのシステムを接続するには、1)Ubuntuで動作するQtベースのアプリケーションと2)別のUbuntuマシンで動作するBoostベースのアプリケーションを接続するのがよい方法を探しています。どちらのアプリケーションも共通のインターフェイスコードを置く共通ライブラリを使用します。私は、RPC型のインターフェイスを使用したいと思います。私はCORBAとD-Busを見てきましたが、私は他の人が何を使っているのか、それとも推奨するのだろうと思います。QtとBoost RPC

ありがとうございます。

答えて

4

Apache Thriftは、もともとFacebookによって開発されたクロス言語RPCフレームワークです。しばらく前に書いたプロトタイプを使って、使い方が簡単だったと思います(私は何の問題も覚えていません)。後に他の言語で書かれたコンポーネントでシステムを拡張したい場合は、良い選択です。

0

インターネット通信エンジン(Ice)は、最新のRPCメカニズムであり、多くの言語をサポートしています。 hereをダウンロードできます。 Ice APIの多くはIceの仕様言語であるSliceで定義されています。

スライス(仕様言語氷)は、オブジェクトインターフェイスを実装から分離する基本的な抽象化メカニズムです。 Sliceは、アプリケーションによって使用される型およびオブジェクトインタフェースを記述するクライアントとサーバの間のコントラクトを確立します。この説明は実装言語に依存しないため、クライアントがサーバーと同じ言語で記述されているかどうかは関係ありません。

スライス定義は、C++などのコンパイラによって特定の実装言語用にコンパイルされます。

XML-RPCを使用することもできます。これは、軽量で使いやすいRPCメカニズムです。あなたはそれを得ることができますhere

2

ØMQとお考えください。これは、クロスプラットフォームのメッセージングライブラリであり、他の多くのものの中では、「自動で」接続の問題を処理します(障害の場合は再接続を含む)。多くの言語でバインドされており、czmqライブラリは、多くの一般的なØMQ用の高級Cインタフェースを提供します。

RPCフレームワークでは簡単にRequest-Replyパターンを使用できますが、guideを読むと、他のパターンが適切な場合があります。

ØMQの上に構築されたRPC frameworkが見つかりましたが、明らかにC++を使用しているため、学習目的以外では役に立ちません。 this questionも参照してください。あなたが望むならば、あなたはおそらくあなたのロールをかなり簡単に転がすことができます。

ØMQのライセンスは、基本的に静的リンクの例外を持つLGPLである「LGPLv3 +」です。 czmqはMPLv2に移行していますので、ØMQがすぐに対応しても驚かないでしょう。 ØMQの作成者からのメッセージによると、MPLv2は "LGPLv3 +"ライセンスと非常に似ていますが、エンタープライズの弁護士にとってはより受け入れやすいものです。

インターフェイスコードについては、boost serializationと考えることもできます。ブーストシリアライゼーションと一緒にczmq(自動ノード発見のためのzbeaconを含む)を使用しました。これはとてもうまく動作します。私は以前はXML-RPCを使用していましたが、私はそれが提供する接続処理機能のためにØMQを好んでいました。