NetMQ vs clrzmq

Ale*_*sic 5 zeromq netmq

几个月前,我选择使用.NET库来实现ZeroMQ通信,而且我很担心zeromq.org上建议的库很少.

与此同时,我学到了很多东西,所以我将在这里分享.有人可能会觉得这很有帮助.所以让我问自己:

NetMQ和clrzmq有什么区别?

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

Ale*_*sic 8

这两者之间的关键区别在于:

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

哪一个使用?嗯,没有简单的答案.在选择时,请记住以下几点:

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

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

更新2:NetMQ中的轮询器实现问题(此处描述)在我的案例中被证明是NetMQ的show-stopper问题.由于这个问题我已经迁移我的项目CLRZMQ(我可以改变我的想法在路上...)不过,说起轮询,有CLRZMQ文档中的一个问题,你应该知道,它的描述在这里