Frage

Ich entwickle eine Anwendung, bei der verteilten Komponenten miteinander über ein Netzwerk, in einer asynchronen, pub / sub Art und Weise zu sprechen.

Für diesen, ich mag die Idee XML über Sockets zu senden - es ist asynchron, ich brauche keinen Server jeglicher Art, und es kann lokal oder über ein Netzwerk arbeiten. Ich muß meinen eigenen Pub / Sub-Mechanismus rollen, die wahrscheinlich nicht zu beschwerlich sein wird - ich die IP-Adresse als die ID des Teilnehmers nutzen könnte. Die Umsetzung Sprache ist C ++. Ich habe diese Methode vor mit guten Ergebnissen verwendet. Aber ich frage mich, ob es einen besseren Weg? Jede Beratung willkommen.

Edit: Ich habe noch keine Entscheidung gemacht, aber ich bin in cparcode Kommentar auf protobuf interessiert:

„Ich habe nie verstanden, die Popularität von XML für Netzwerk Comms irgendeine Weise stellt ich fest, dass das Protokoll nur einen Teil des Problems ist aber zu diesem Thema gibt es von Google protobuf zu. http://code.google.com/p/protobuf/ - caparcode (11. März um 1:01)"

War es hilfreich?

Lösung

Stattdessen XML verwendet es sei am besten, einen vorhandenen Message-Passing-Framework zu verwenden. Hier finden Sie aktuelle libt2n oder d-Bus

Aber es haben Sie Ihre eigene Socket-Implementierung in der Vergangenheit mit guten Ergebnissen Ich sehe keinen Grund, warum verwendet man ändern sollte. Wenn es nicht kaputt ist repariere es nicht:)

Andere Tipps

Statt nur gerade Steckdosen, könnten Sie eine Lösung wie AMQP zu betrachten.

Wenn Sie sprechen Buchse mit Anschlüssen für eine Pub / Sub-Schnittstelle, die in der Regel bedeutet, Punkt-zu-Punkt-Kommunikation, die nicht immer eine skalierbare Lösung ist. AMQP-Adressen wirklich diese Art von pub / sub Problem. Es ist kostenlos, es ist Open-Source, und es funktioniert.

Da sie bereits das Pub / Sub Problem gelöst, können Sie ihre Arbeit nutzen aus, anstatt es selbst zu tun.

Ich empfehle OpenAMQ.

Dass gesagt wird, es hängt wirklich davon ab, welche Art von Umgebung, die Sie gerade arbeiten. AMQP erfordert einen AMQP-Broker (eine Anwendung, die für das Routing von Nachrichten) irgendwo in dem System ausgeführt werden.

Hier finden Sie aktuelle ActiveMQ . Es ist ein JMS Anbieter und hat auch Bindungen in vielen anderen Sprachen, Arbeiten auf mehrere Transporte, und verfügt über eine Auswahl von Protokollen, die es für seine Nachrichten verwendet wird.

RabbitMQ ist auch ein AMQP-Broker, die andere Protokolle wie XMPP unterstützt, HTTP, STOMP, SMTP und Adapter verwenden.

Vor allem, wenn Sie es vorher getan haben, und es trifft immer noch Ihre Bedürfnisse, bleiben Sie dabei.

Wie wäre es einen Web-Server in Ihrer Anwendung einbetten? EasyHTTPD ist Open Source, C ++, und recht einfach zu bedienen. Der asynchrone Teil ist einfach genug. Entweder spinnen einen neuen Thread auf den Absender oder Empfänger.

Wenn Sie XML suchen, und Cross-Plattform zu starten, können Sie einen XML-RPC-Mechanismus wie SOAP betrachten (ich habe zwischen einem C-Server unter Linux mit einem C ++ Client auf win32 gSOAP für die Kommunikation verwendet, und es funktionierte gut, wenn Sie es alle raus) Figur.

Wenn Sie nicht stark auf XML geneigt und Sie wollen etwas einfach und effizient dann erwägen Blick auf YAMI Bibliothek. Es ist ziemlich einfach zu bedienen und die gegebene Verbindung enthält genügend Unterlagen, Begründung und Beispiele, um zu beginnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top