【发布时间】:2013-03-07 11:24:59
【问题描述】:
我将在 Windows 上运行 C++ 中的客户端/服务器应用程序,服务器本身由“管理器”可执行文件组成,生成一次,“工作人员”可执行文件生成 1 到 29 次,具体取决于配置。
coms 位于客户端和“管理器”进程之间、“管理器”进程和“工作”进程之间(配置它们、将数据发送到进程)以及一些“工作”进程之间。 附带说明:当我说工作进程时,我并不是指进程并行执行完全相同的工作以获得超级性能:它们的配置都不同,做不同的工作,性能真的不是问题。这里的几个过程的分离更多是为了稳定性。
现在我不知道该选择哪个网络库来完成所有这些工作。
我知道 boost::asio,我对 boost 及其独特的风格很熟悉,但恐怕我团队的其他成员不熟悉。 我还被建议使用 zeroMq。 我已经看到了其他一些人的优点和缺点。但是我有点迷茫!
对于 zeroMq,我认为我们失去了 asio 的 proactor?所以从某种意义上说它感觉它是低级的? 另一方面,它提供了我认为对我们没有用的发布/订阅等功能。
这些库都不会帮助我们处理序列化部分(交换的数据是异构的)。我在想 google 协议缓冲区可以在这一点上帮助我们,除非周围有一个 do it all 库?
我们隐约考虑过的其他选择是 Corba、amqp。前者感觉笨拙,我们被建议不要这样做。后者感觉过于复杂。 (?)
有什么建议吗?
【问题讨论】:
-
虽然我没有任何积极的建议(我一直使用我自己的网络库),但我可以告诉你要避免什么:绝对避免使用 CORBA,也避免使用 ACE,这太糟糕了。 :)
-
你考虑过 gsoap 吗?它是一种广泛用于基于肥皂的架构
-
@James 感谢您的输入,我忘了提及 ACE。我过去确实使用过它,但在这里并没有真正考虑过。
-
@Pradheep 我会调查一下谢谢 :)
-
您团队中的其他成员熟悉哪些内容?如果他们都必须学习新的东西,那么至少你个人已经熟悉 asio。否则团队的所有成员都在新的领域。
标签: c++ network-programming boost-asio zeromq