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