3

我正在开发一个应用程序,其中分布式组件通过网络以异步、发布/订阅的方式相互通信。

为此,我喜欢通过套接字发送 XML 的想法——它是异步的,我不需要任何类型的服务器,它可以在本地或通过网络工作。我将不得不推出我自己的发布/订阅机制,这可能不会太繁琐——我可以使用 IP 地址作为订阅者的 ID。实现语言将是 C++。我以前用过这种方法,效果很好。但是,我想知道是否有更好的方法?欢迎任何建议。

编辑:我还没有做出决定,但我对 cparcode 对 protobuf 的评论很感兴趣:

“我从不理解使用 XML 进行网络通信的流行度。无论如何,我意识到协议只是你问题的一部分,但在这个问题上,还有谷歌的 protobuf:http ://code.google.com/p/protobuf / – caparcode (3 月 11 日 1:01)"

4

8 回答 8

3

最好不要使用 XML,而是使用现有的消息传递框架。看看libt2nd-bus

但是如果您过去使用过自己的套接字实现并取得了很好的效果,我看不出您应该改变的理由。如果它没有坏,请不要修复它:)

于 2009-03-11T00:55:29.907 回答
1

您可以考虑使用 AMQP 之类的解决方案,而不仅仅是直接的套接字。

当您谈论将套接字连接用于发布/订阅接口时,这通常意味着点对点通信,这并不总是一种可扩展的解决方案。AMQP 真正解决了这种发布/订阅问题。它是免费的,它是开源的,并且可以工作。

鉴于他们已经解决了发布/订阅问题,您可能希望利用他们的工作,而不是自己动手。

我推荐OpenAMQ。

话虽如此,这实际上取决于您在哪种环境中工作。AMQP 需要 AMQP 代理(负责路由消息的应用程序)在系统中的某个位置运行。

于 2009-03-11T01:13:07.913 回答
1

看看ActiveMQ。它是一个JMS提供者,还具有许多其他语言的绑定,适用于多种传输,并且具有用于其消息的一系列协议。

于 2009-03-11T05:08:30.017 回答
1

RabbitMQ 也是一个 AMQP 代理,它还使用适配器支持其他协议,如 XMPP、HTTP、STOMP、SMTP。

于 2009-03-14T11:46:49.610 回答
0

特别是如果您以前做过,并且仍然满足您的需求,请坚持下去。

于 2009-03-11T01:05:16.123 回答
0

在您的应用程序中嵌入 Web 服务器怎么样?EasyHTTPD是开源的 C++ 并且非常易于使用。异步部分很简单。您要么在发送者或接收者上启动一个新线程。

于 2009-03-11T01:44:36.950 回答
0

如果您正在寻找 XML 和跨平台启动,您可以考虑使用像 SOAP 这样的 XML-RPC 机制(我使用 gSoap 在 linux 上的 C 服务器与 win32 上的 C++ 客户端之间进行通信,它运行良好一旦你弄清楚了)。

于 2009-03-11T02:51:56.990 回答
0

如果您不太倾向于 XML,并且想要一些简单而高效的东西,那么请考虑查看YAMI库。它使用起来相当简单,并且给定的链接包含足够的文档、基本原理和示例以供入门。

于 2009-03-11T07:32:10.170 回答