【发布时间】:2016-12-05 14:12:06
【问题描述】:
几个月前,我选择 .NET 库来实现 ZeroMQ 通信,但我很困惑zeromq.org 建议的库很少。
同时我学到了一些东西,所以我会在这里分享。有人可能会觉得这很有帮助。所以让我问自己:
NetMQ 和 clrzmq 有什么区别?
(虽然我会自己回答这个问题,但如果其他人对此主题有一些经验 - 欢迎其他答案!)
【问题讨论】:
几个月前,我选择 .NET 库来实现 ZeroMQ 通信,但我很困惑zeromq.org 建议的库很少。
同时我学到了一些东西,所以我会在这里分享。有人可能会觉得这很有帮助。所以让我问自己:
NetMQ 和 clrzmq 有什么区别?
(虽然我会自己回答这个问题,但如果其他人对此主题有一些经验 - 欢迎其他答案!)
【问题讨论】:
两者的主要区别在于方法:
libzmq 库(它是 libzmq 库的 .NET 包装器);libzmq,而是用纯 C# 重写它。使用哪一个?好吧,没有简单的答案。以下是选择时要记住的一些重要事项:
libzmq 应该比任何托管代码都快得多,但是在 CLRZMQ 和 libzmq 之间的通信必须进行封送处理,所以我真的无法预测哪个库会在速度上胜出。更新:NetMQ 的另一个重要优势是支持 - 您将在一两天内得到答案,有时甚至在几个小时内。
更新 2:在我的例子中,NetMQ 中的轮询器实现问题(描述为 here)原来是 NetMQ 的显示停止器问题。由于这个问题,我已经将我的项目迁移到 CLRZMQ(我可能会改变主意......)不过,谈到轮询器,您应该注意 CLRZMQ 文档中的一个问题,它被描述为 here
【讨论】:
根据 Doron Somech 的说法:
http://somdoron.com/2013/03/introducing-netmq/
自 2014 年起,不再维护 C# 绑定 (CLRZMQ),NetMQ 是 ZeroMQ 和 .Net 的默认选择。
看来:
https://github.com/zeromq/clrzmq4
替换了原来的CLRZMQ项目。
我正在使用 NetMQ 并期待为该项目做出贡献。
附:我为 NetMQ 和本机 ZeroMQ 构建了相同的 Pub-Sub 场景,但没有发现任何性能差异。干得好,多伦!
【讨论】: