3

分散コンポーネントがネットワークを介して非同期のパブ/サブのような方法で互いに通信するアプリケーションを開発しています。

このために、XML をソケット経由で送信するというアイデアが気に入っています。これは非同期であり、サーバーは一切必要なく、ローカルでもネットワーク経由でも動作します。独自の pub/sub メカニズムをロールバックする必要がありますが、これはおそらくそれほど面倒ではありません。サブスクライバーの ID として IP アドレスを使用できます。実装言語は C++ になります。私は以前にこの方法を使用して、良い結果を得ました。しかし、もっと良い方法があるのだろうか?どんなアドバイスでも大歓迎です。

編集: まだ決定はしていませんが、protobuf に関する cparcode のコメントに興味があります。

「ネットワーク通信に XML を使用することが一般的であることを理解していませんでした。いずれにせよ、プロトコルは問題の一部に過ぎないことは理解していますが、その件に関しては、Google の protobuf もあります: http://code.google.com/p/protobuf / – カパルコード (3 月 11 日 1:01)"

4

8 に答える 8

3

XMLを使用する代わりに、既存のメッセージパッシングフレームワークを使用するのが最善の場合があります。libt2nまたはd-busをご覧ください

しかし、過去に独自のソケット実装を使用したことがあり、良い結果が得られた場合は、変更する必要がある理由がわかりません。それが壊れていない場合は修正しないでください:)

于 2009-03-11T00:55:29.907 に答える
1

RabbitMQ は AMQP ブローカーでもあり、アダプターを使用して XMPP、HTTP、STOMP、SMTP などの他のプロトコルもサポートします。

于 2009-03-14T11:46:49.610 に答える
1

ストレート ソケットだけでなく、AMQP のようなソリューションを検討することもできます。

pub/sub インターフェイスにソケット接続を使用することについて話しているとき、それは通常、ポイント ツー ポイント通信を意味し、常にスケーラブルなソリューションとは限りません。AMQP は、この種の pub/sub 問題に実際に対処します。無料で、オープンソースで、機能します。

彼らがすでに pub/sub 問題を解決していることを考えると、自分で行うのではなく、彼らの仕事を活用したいと思うかもしれません。

OpenAMQをお勧めします。

そうは言っても、作業している環境の種類によって大きく異なります。AMQP では、AMQP ブローカー (メッセージのルーティングを担当するアプリケーション) がシステムのどこかで実行されている必要があります。

于 2009-03-11T01:13:07.913 に答える
0

XML にそれほど傾倒しておらず、シンプルで効率的なものが必要な場合は、YAMIライブラリを検討してください。使い方はかなり簡単で、指定されたリンクには、開始するのに十分なドキュメント、理論的根拠、および例が含まれています。

于 2009-03-11T07:32:10.170 に答える
0

特に以前にそれを行ったことがあり、それでもニーズを満たしている場合は、それを使い続けてください。

于 2009-03-11T01:05:16.123 に答える
0

アプリに Web サーバーを組み込むのはどうですか? EasyHTTPDはオープン ソースの C++ であり、非常に簡単に使用できます。非同期部分は簡単です。送信側または受信側で新しいスレッドをスピンアップします。

于 2009-03-11T01:44:36.950 に答える