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