2

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

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

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

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

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

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

专家们对这些选择有何看法,以及从经验中哪些方法可以在不影响性能的情况下运作良好。开发人员还有其他选择吗?

谢谢迪斯

4

2 回答 2

4

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

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

于 2010-10-31T06:24:43.847 回答
0

哪个平台?

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

只需编写一个或两个 DLL 并将它们插入,您就完成了网络连接。

我目前没有基于协议缓冲区的插件示例,但它在我的待办事项列表中......

于 2010-10-31T09:16:07.913 回答