Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 协议缓冲区和实际传输选项-套接字或中间件_C++_Sockets_Protocol Buffers_Middleware - Fatal编程技术网

C++ 协议缓冲区和实际传输选项-套接字或中间件

C++ 协议缓冲区和实际传输选项-套接字或中间件,c++,sockets,protocol-buffers,middleware,C++,Sockets,Protocol Buffers,Middleware,我正在开发一个客户机/服务器应用程序,我正在评估通信层的一些选项 作为这个通信框架的一部分,我正在考虑使用谷歌的协议缓冲区(PB)来表示传输数据,而不是重新发明我自己的二进制结构 现在谈到实际的传输,我想知道是否应该使用普通套接字来发送/接收这些二进制消息,或者使用某种形式的中间件。与套接字相比,使用中间件具有某些明显的优势。我关心的几个问题包括:通信模型——发布/订阅、请求/响应和故障转移 另一方面,与中间件方法相比,使用套接字具有低开销的优势,并将提供更好的性能 您还可以考虑使用带有协议缓冲

我正在开发一个客户机/服务器应用程序,我正在评估通信层的一些选项

作为这个通信框架的一部分,我正在考虑使用谷歌的协议缓冲区(PB)来表示传输数据,而不是重新发明我自己的二进制结构

现在谈到实际的传输,我想知道是否应该使用普通套接字来发送/接收这些二进制消息,或者使用某种形式的中间件。与套接字相比,使用中间件具有某些明显的优势。我关心的几个问题包括:通信模型——发布/订阅、请求/响应和故障转移

另一方面,与中间件方法相比,使用套接字具有低开销的优势,并将提供更好的性能

您还可以考虑使用带有协议缓冲区(google的协议缓冲区wiki上的第三方插件)的RPC库在客户端和服务器之间进行通信。虽然它是从低级套接字抽象出来的,但它仍然不支持中间件特性

目前,我的客户机是一个AdobeFlexGUI和两个服务器端进程(一个java和另一个C++)。将来,客户端和服务器端可能会使用其他语言(如.NET)开发其他服务

专家们对这些选择有何看法?根据经验,哪些选择在不影响性能的情况下效果良好。开发人员还有其他选择吗

谢谢
Dece

除非是学习练习,否则您绝对必须使用一些中间件。有很多选择:AMQP、ZeroMQ、XMPP、Comet/Bayeux

对于您的场景,您可能需要基于web的东西,因此基于HTTP的XMPP可能是一个不错的选择。然而,我偏爱Comet(尽管我发现Bayeux对于我的需求来说太复杂了)。

哪个平台

如果是Windows,那么我有一个免费的、简单的、高性能的、基于IO完成的可插拔服务器平台,名为WASP,可从中获得

只需编写一两个DLL并将它们插入即可完成联网

我目前没有一个基于协议缓冲区的插件示例,但它在我要做的事情列表中