我将在 Windows 上运行的 C++ 中的客户端/服务器应用程序上工作,服务器本身由“管理器”可执行文件组成,生成一次,“工作人员”可执行文件生成 1 到 29 次,具体取决于配置。
coms 位于客户端和“管理器”进程之间,“管理器”进程和“工作”进程之间(配置它们,将数据发送到进程)以及一些“工作”进程之间。附带说明:当我说工作进程时,我并不是指进程并行执行完全相同的工作以获得超级性能:它们的配置都不同,做不同的工作,性能真的不是问题。这里的几个过程中的分离更多是关于稳定性。
现在我不知道选择什么网络库来做这一切。
我知道 boost::asio,我熟悉 boost 和它的特殊风格,但恐怕我团队的其他成员不熟悉。我还被建议使用 zeroMq。我已经看到了其他一些人的优点和缺点。但我有点失落!
使用 zeroMq,我认为我们失去了 asio 的 proactor?所以从某种意义上说它感觉它是低级的?另一方面,它提供了我认为对我们没有用的发布/订阅等功能。
这些库都不会帮助我们处理序列化部分(交换的数据是异构的)。我在想谷歌协议缓冲区可以在这一点上帮助我们,除非周围有一个全能库?
我们隐约考虑过的其他选择是 Corba、amqp。前者感觉笨拙,我们被建议不要这样做。后者感觉过于复杂。(?)
有什么建议吗?