【问题标题】:NetMQ vs clrzmqNetMQ 与 clrzmq
【发布时间】:2016-12-05 14:12:06
【问题描述】:

几个月前,我选择 .NET 库来实现 ZeroMQ 通信,但我很困惑zeromq.org 建议的库很少。

同时我学到了一些东西,所以我会在这里分享。有人可能会觉得这很有帮助。所以让我问自己:

NetMQ 和 clrzmq 有什么区别?

(虽然我会自己回答这个问题,但如果其他人对此主题有一些经验 - 欢迎其他答案!)

【问题讨论】:

    标签: zeromq netmq


    【解决方案1】:

    两者的主要区别在于方法:

    • CLRZMQ 是 binding 项目,它实际上在后台使用 libzmq 库(它是 libzmq 库的 .NET 包装器);
    • NetMQ 是 ZeroMQ 的 .NET 原生端口,这意味着它不会包装现有的 libzmq,而是用纯 C# 重写它

    使用哪一个?好吧,没有简单的答案。以下是选择时要记住的一些重要事项:

    • 在可移植性方面 - NetMQ 胜出,尤其是因为有 .NET Core 版本的 NetMQ。使用 NetMQ 也更容易部署 - 无需担心原生库(x64 / x86 等)。
    • 另一方面,NetMQ 实际上重写了所有内容,这对我来说有点吓人 - 总是存在某些内容未从原始代码精确镜像的风险,并且可能导致与其他 ZeroMQ 节点不兼容。还有一个问题是 NetMQ 能以多快的速度实现原始库中的新功能。
    • 表演。目前我不知道哪个库在性能上获胜,但这绝对是在选择时要考虑的事情。 libzmq 应该比任何托管代码都快得多,但是在 CLRZMQ 和 libzmq 之间的通信必须进行封送处理,所以我真的无法预测哪个库会在速度上胜出。

    更新:NetMQ 的另一个重要优势是支持 - 您将在一两天内得到答案,有时甚至在几个小时内。

    更新 2:在我的例子中,NetMQ 中的轮询器实现问题(描述为 here)原来是 NetMQ 的显示停止器问题。由于这个问题,我已经将我的项目迁移到 CLRZMQ(我可能会改变主意......)不过,谈到轮询器,您应该注意 CLRZMQ 文档中的一个问题,它被描述为 here

    【讨论】:

    • 现在是 2021 年,我在这里也有同样的问题——选择哪一个。你的看法有改变吗?欣赏新见解。
    【解决方案2】:

    根据 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 场景,但没有发现任何性能差异。干得好,多伦!

    【讨论】:

    • 你尝试过majordomo模式吗?好像打了几次电话就断线了
    猜你喜欢
    • 2015-05-17
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多