NetMQ против clrzmq

Несколько месяцев назад я выбирал библиотеку .NET для реализации связи с ZeroMQ и был довольно сбит с толку тем фактом, что на zeromq.org.

Тем временем я узнал несколько вещей, поэтому я поделюсь здесь. Кто-то может найти это полезным. Итак, позвольте мне спросить себя:

В чем разница между NetMQ и clrzmq?

(Хотя я отвечу на это сам, если у кого-то еще есть опыт по этому вопросу - альтернативный ответ приветствуется!)


person Aleksandar Pesic    schedule 31.07.2016    source источник


Ответы (2)


Основное различие между ними заключается в подходе:

  • CLRZMQ — это проект binding, который фактически использует библиотеку libzmq в фоновом режиме (это оболочка .NET для библиотеки libzmq);
  • NetMQ — это родной порт ZeroMQ для .NET, что означает, что он не обертывает существующий libzmq, а переписывает его на чистом C#.

Какой использовать? Нет простого ответа. Вот несколько важных моментов, на которые стоит обратить внимание при выборе:

  • Когда дело доходит до переносимости, NetMQ явно выигрывает, особенно благодаря тому, что существует версия NetMQ для .NET Core. Развертывание с NetMQ также упрощается — нет необходимости беспокоиться о нативных библиотеках (x64/x86 и т. д.).
  • С другой стороны, тот факт, что NetMQ на самом деле переписывает все, меня немного пугает — всегда есть риск, что что-то не будет точно отражено от исходного кода, и это может привести к несовместимости с другими узлами ZeroMQ. Также возникает вопрос, насколько быстро NetMQ будет реализовывать новые функции из исходной библиотеки.
  • Спектакли. На данный момент я не знаю, какая библиотека выигрывает по производительности, но это обязательно нужно учитывать при выборе. libzmq должен быть значительно быстрее любого управляемого кода, но при обмене данными между CLRZMQ и libzmq должна иметь место маршалинг, поэтому я действительно не могу предсказать, какая библиотека выиграет в скорости.

ОБНОВЛЕНИЕ: Еще одним важным преимуществом NetMQ является поддержка. Вы получите ответ в течение дня или двух, а иногда и в течение нескольких часов.

ОБНОВЛЕНИЕ 2: Обнаружилась проблема с реализацией пуллера в NetMQ (описана здесь). -stopper проблема для NetMQ в моем случае. Из-за этой проблемы я перенес свои проекты на CLRZMQ (возможно, я передумаю в будущем...) Тем не менее, говоря о пуллере, есть одна проблема в документации CLRZMQ, о которой вам следует знать, и она описана здесь

person Aleksandar Pesic    schedule 31.07.2016

По словам Дорона Сомеха:

http://somdoron.com/2013/03/introduction-netmq/

С 2014 года привязка C# (CLRZMQ) больше не поддерживается, и NetMQ является выбором по умолчанию для ZeroMQ и .Net.

Кажется, что:

https://github.com/zeromq/clrzmq4

заменил оригинальный проект CLRZMQ.

Я использую NetMQ и с нетерпением жду возможности внести свой вклад в проект.

P.S. Я создаю один и тот же сценарий Pub-Sub для NetMQ и собственного ZeroMQ и не обнаружил никакой разницы в производительности. Отличная работа, Дорон!

person HMartyrossian    schedule 12.08.2016
comment
Вы пробовали шаблон мажордома. кажется, что он отключается после некоторых звонков - person Kamran Shahid; 31.05.2019