基于信号-槽的扩展网络通信库的接口,直接的问题就是信号槽机制的处理性能不够好。在我的经验中,我们很少会依赖于信号槽去实现通信,即使我们用QT来开发我们的系统。以 QLocalServer 为例,需要简单修改本身就是一件可大可小的事情。在ZMQ中,可以做到,改改配置参数就好了,更灵活一些。
ZeroMQ的例子非常的简单,请感兴趣的翻翻书的前三章,应该就能用上了。
ZeroMQ,可以理解为以域套接字,socket 为底层支持,在应用层进行接口封装后的消息库,提供了相比使用Socket直接进行tcp udp 通信更加抽象的“”对象“”,比如:push-pull(消息推送), publish-sub(订阅发布) 以及 代理,路由,这些模式被集成在库中,不用自己再去“”创造性的使用socket“”进行进程通信了,库提供了常用的消息模式。
ZeroMQ 与 QT 没有必然的关系,所以我不能提供与QT相关的例子。你在C/C++中使用ZeroMQ 比使用QT更加轻量,而QT现在更像是C++的一种标准开发环境。另外就是ZeroMQ 有其它多种语言的绑定比如Java 等,因此在构建一个更加复杂的系统的时候,你可能必须跳开用QT才适合解决的问题,但ZMQ会成为一个像胶水一样的库,用来把你的系统粘成一个整体。
以上纯粹是个人经验,各位大牛见笑。使用不使用ZMQ做进程间通信,并不是一个多么了不得的问题,同样有很多C/C++的问题,ZMQ 搞不定或者搞的不太行。