C++ 协议缓冲区和实际传输选项-套接字或中间件
我正在开发一个客户机/服务器应用程序,我正在评估通信层的一些选项 作为这个通信框架的一部分,我正在考虑使用谷歌的协议缓冲区(PB)来表示传输数据,而不是重新发明我自己的二进制结构 现在谈到实际的传输,我想知道是否应该使用普通套接字来发送/接收这些二进制消息,或者使用某种形式的中间件。与套接字相比,使用中间件具有某些明显的优势。我关心的几个问题包括:通信模型——发布/订阅、请求/响应和故障转移 另一方面,与中间件方法相比,使用套接字具有低开销的优势,并将提供更好的性能 您还可以考虑使用带有协议缓冲区(google的协议缓冲区wiki上的第三方插件)的RPC库在客户端和服务器之间进行通信。虽然它是从低级套接字抽象出来的,但它仍然不支持中间件特性 目前,我的客户机是一个AdobeFlexGUI和两个服务器端进程(一个java和另一个C++)。将来,客户端和服务器端可能会使用其他语言(如.NET)开发其他服务 专家们对这些选择有何看法?根据经验,哪些选择在不影响性能的情况下效果良好。开发人员还有其他选择吗 谢谢C++ 协议缓冲区和实际传输选项-套接字或中间件,c++,sockets,protocol-buffers,middleware,C++,Sockets,Protocol Buffers,Middleware,我正在开发一个客户机/服务器应用程序,我正在评估通信层的一些选项 作为这个通信框架的一部分,我正在考虑使用谷歌的协议缓冲区(PB)来表示传输数据,而不是重新发明我自己的二进制结构 现在谈到实际的传输,我想知道是否应该使用普通套接字来发送/接收这些二进制消息,或者使用某种形式的中间件。与套接字相比,使用中间件具有某些明显的优势。我关心的几个问题包括:通信模型——发布/订阅、请求/响应和故障转移 另一方面,与中间件方法相比,使用套接字具有低开销的优势,并将提供更好的性能 您还可以考虑使用带有协议缓冲
Dece除非是学习练习,否则您绝对必须使用一些中间件。有很多选择:AMQP、ZeroMQ、XMPP、Comet/Bayeux 对于您的场景,您可能需要基于web的东西,因此基于HTTP的XMPP可能是一个不错的选择。然而,我偏爱Comet(尽管我发现Bayeux对于我的需求来说太复杂了)。哪个平台 如果是Windows,那么我有一个免费的、简单的、高性能的、基于IO完成的可插拔服务器平台,名为WASP,可从中获得 只需编写一两个DLL并将它们插入即可完成联网 我目前没有一个基于协议缓冲区的插件示例,但它在我要做的事情列表中