我正在开发一个应用程序,其中分布式组件通过网络以异步,发布/子方式相互通信。
为此,我喜欢通过套接字发送XML的想法 - 它是异步的,我不需要任何类型的服务器,它可以在本地或通过网络工作。我将不得不推出自己的发布/订阅机制,这可能不会太繁重 - 我可以使用IP地址作为订阅者的ID。实现语言将是C ++。我之前使用过这种方法效果很好。但是,我想知道是否有更好的方法?欢迎任何建议。
编辑:我还没有做出决定,但我对cparcode对protobuf的评论感兴趣:
“我从未理解使用XML进行网络通信的普及。无论如何,我意识到协议只是你问题的一部分,但在这个问题上,还有Google的protobuf:http://code.google.com/p/protobuf/ - caparcode(3月11日)在1:01)“
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以consider a solution like AMQP而不仅仅是直插座。
当您谈论为pub / sub接口使用套接字连接时,这通常意味着点对点通信,这并不总是可扩展的解决方案。 AMQP真正解决了这种发布/子问题。它是免费的,它是开源的,它可以工作。
鉴于他们已经解决了pub / sub问题,你可能想要利用他们的工作而不是自己做。
我建议OpenAMQ.
话虽如此,它实际上取决于您正在使用的环境.AMQP要求AMQP代理(负责路由消息的应用程序)在系统中的某个位置运行。
答案 2 :(得分:1)
答案 3 :(得分:1)
RabbitMQ也是一个AMQP代理,它支持其他协议,如XMPP,HTTP,STOMP,SMTP以及使用适配器。
答案 4 :(得分:0)
特别是如果你以前做过,它仍然满足你的需求,坚持下去。
答案 5 :(得分:0)
如何在您的应用中嵌入网络服务器? EasyHTTPD是开源的,C ++,并且使用起来非常简单。异步部分很简单。您可以在发件人或接收者上启动新线程。
答案 6 :(得分:0)
如果您正在寻找XML和跨平台引导,您可以考虑使用像SOAP这样的XML-RPC机制(我已经使用gSoap在Linux上的C服务器与win32上的C ++客户端之间进行通信,以及一旦你弄明白,它就能正常工作。)
答案 7 :(得分:0)
如果您不是非常倾向于使用XML而且想要简单有效的事情,那么请考虑查看YAMI库。它使用起来相当简单,给定的链接包含足够的文档,基本原理和示例,以便开始使用。