NServiceBus против MassTransit

Я борюсь с списком плюсов и минусов относительно NServiceBus и MassTransit.

Теперь я знаю, что здесь есть поток, но на самом деле он не отвечает на мои вопросы.

Вот что я читал до сих пор:

  • NServiceBus, да, он лицензирован, и он не приходит бесплатно.
  • MassTransit, да, это с открытым исходным кодом, но документации, похоже, не хватает.

NServiceBus старше и имеет больше ссылок. Трудно найти материал о MassTransit, но я открыт. Однако я должен предоставить твердое решение, и поэтому я должен спросить.

Так что, пожалуйста, кто-то с опытом работы с обоими фреймворками. Почему я должен выбирать NServiceBus? ИЛИ Почему я должен выбрать MassTransit?

Это производительность, безопасность, масштаб или?

Ответ 1

Если бы мне пришлось обобщить, вот что я сказал бы:

Если вам нужна коммерческая поддержка, перейдите на NServiceBus. Если вам удобно использовать форумы в качестве средства поддержки, MassTransit - отличный вариант. На данный момент разработчики очень чутко реагируют на наши проблемы. Если вы выберете MassTransit, теперь вы будете выбирать между MSMQ и RabbitMQ. Если вам нужен код DTC, перейдите в MSMQ. Если вы хотите больше возможностей и улучшите администрирование, перейдите к RabbitMQ.

В нашем проекте мы переключились с NServiceBus на MassTransit по двум причинам:

  • MassTransit является бесплатным.
  • Мы любим RabbitMQ

Я использовал оба фреймворка. Я использовал MassTransit дольше, чем NServiceBus. Вот основные моменты, которые я вижу.

Стоимость:

  • MassTransit - это Apache 2.0, лицензированный и бесплатный для коммерческого использования, в то время как NServiceBus - нет.

Поддержка:

  • Как сказал Уди, есть возможность для поддержки коммерческих NServiceBus, я не видел этого для MassTransit.

Транспорт:

  • MassTransit поддерживает MSMQ и RabbitMQ
  • NServiceBus поддерживает только MSMQ RabbitMQ поддерживается в NServiceBus 4 +

RabbitMQ против MSMQ:

  • Поддержка MSMQ DTC (координатор распределенной транзакции) для транзакций с несколькими процессами на потенциально нескольких компьютерах (например, SQL-сервер, служба Windows)
  • RabbitMQ имеет отличный интерфейс администрирования
  • MSMQ работает дольше и является продуктом Microsoft.
  • RabbitMQ является новым, открытым исходным кодом, бесплатным и спонсируется VMWare.
  • MSMQ устанавливается на большинстве машин Windows по умолчанию.

Уди Дахан и ребята из MassTransit (Chris Patterson, Dru Sellers и Travis Smith) - все блестящие люди.

Ответ 2

Как оригинальный автор NServiceBus, я явно склонен к своей собственной технологии, поэтому я постараюсь сделать это как можно более сбалансированным.

Обновление: теперь доступны инструменты мониторинга и отладки для NServiceBus через Частная платформа обслуживания, которые значительно упрощают создание и работу систем на основе сообщений, С полной технической целостностью, я считаю, что это сильно подсказывает баланс в пользу NServiceBus. End Update

В то время как в первые дни я действительно отслеживал большую часть развития MassTransit, у меня не было много времени, чтобы сделать это в последнее время, поэтому я буду считать, что обе технологии одинаково хороши сами по себе и сосредоточены на экосистеме.

В NServiceBus есть более обширное сообщество, поэтому, если вам нужна помощь, есть больше людей, которые могут это дать. Тем не менее, основная группа MassTransit всегда оказывала огромное влияние на тех, у кого есть проблемы.

С NServiceBus компании могут приобрести поддержку и получить гарантированное время отклика на свои проблемы - 24x7 по всему миру. Я не считаю, что подобное предложение доступно от реселлеров MassTransit.

В оффлайновой перспективе на NServiceBus доступны общедоступные курсы, а также многие консультанты, которые могут быть привлечены на месте для запуска проекта или оказания помощи в случае возникновения проблем. Я слышал от нескольких компаний, которые решили переключиться с MassTransit на NServiceBus, потому что они не могли получить кого-то на месте, когда им это было нужно.

Я бы сказал, что модели лицензирования вокруг NServiceBus достаточно гибкие, чтобы удовлетворить любой бюджет, как указывает широкий спектр клиентов, и может быть вполне оправдан для руководства. Конечно, с MassTransit лицензирование бесплатное.

Надеюсь, что это поможет в некотором роде.

Ответ 3

Вы всегда можете использовать Shuttle (FOSS): https://github.com/Shuttle/shuttle-esb:)

Документация (всегда улучшается): http://shuttle.github.io/shuttle-esb/

Проект Shuttle длится почти 2 года и используется в производственных системах. Это будет вопрос выбора того, что резонирует с вами.

NServiceBus имеет хорошую репутацию. Я использовал его ранее в производственной системе (1.9), но не с тех пор, как он стал коммерческим (точка, с которой я начал с Shuttle).

Я не пробовал MassTransit.

Я думаю, что все ваши варианты будут иметь основы (command/event/pub-sub). Однако NServiceBus имеет саги и данные шины данных, хотя я считаю, что достаточно легко обрабатывать данные вне самой служебной шины, например, в обработчиках сообщений о конечных точках. Я не знаю, имеет ли MassTransit саги/шину данных, но Shuttle, конечно же, этого не делает.

Еще одно соображение - это, вероятно, то, как вы собираетесь использовать служебную шину. Если он должен быть частью продукта, то для коммерческого варианта, такого как NServiceBus, вам нужно будет учитывать последствия затрат для пользователей вашего продукта, и хотя это все равно что-то, что необходимо учитывать для внутреннего развития, это, безусловно, может быть оправданными.