.net - NServiceBus vs MassTransit
esb (3)
Estoy luchando con una lista de pros y contras sobre NServiceBus y MassTransit.
Ahora sé que ya hay un hilo aquí, pero realmente no responde mis preguntas.
Esto es lo que he leído hasta ahora:
- NServiceBus, sí, tiene licencia y no es gratis.
- MassTransit, sí, es de código abierto, pero la documentación parece carecer de algo.
NServiceBus es más antiguo y tiene más referencias. Es difícil encontrar cosas sobre MassTransit, pero soy de mente abierta. Sin embargo, tengo que ofrecer una solución sólida, así que tengo que preguntar.
Entonces, por favor, alguien con experiencia en ambos marcos. ¿Por qué debería elegir NServiceBus? O ¿Por qué debería elegir MassTransit?
¿Es rendimiento, seguridad, escala o?
Como autor original de NServiceBus, estoy claramente predispuesto hacia mi propia tecnología, así que trataré de mantener esto lo más equilibrado posible.
Actualización: ahora hay herramientas de monitoreo y depuración disponibles para NServiceBus a través de la plataforma de servicio particular, que hace que la creación y ejecución de sistemas basados en mensajes sea mucho más fácil. Con integridad técnica completa, creo que esto inclina fuertemente el equilibrio a favor de NServiceBus. Fin de actualización
Si bien en los primeros días seguí la mayoría del desarrollo de MassTransit, no he tenido mucho tiempo para hacerlo recientemente, así que supongo que ambas tecnologías son igualmente buenas por derecho propio y se centran en el ecosistema en su lugar.
Hay una comunidad más grande alrededor de NServiceBus, por lo que si necesita ayuda, hay más personas que pueden brindarla. Dicho esto, el grupo principal de MassTransit siempre ha sido extremadamente bueno para ayudar a cualquier persona que tenga problemas.
Con NServiceBus, las compañías pueden comprar soporte y obtener tiempos de respuesta garantizados sobre sus problemas, 24x7, en todo el mundo. No creo que haya una oferta similar disponible por parte de los chicos de MassTransit.
Desde una perspectiva fuera de línea, hay cursos públicos disponibles en todo el mundo en NServiceBus, así como muchos consultores que se pueden traer en el sitio para iniciar un proyecto o ayudar en caso de problemas. He escuchado de varias compañías que decidieron cambiar de MassTransit a NServiceBus porque no pudieron conseguir a alguien en el lugar cuando lo necesitaban.
Yo diría que los modelos de licencia en torno a NServiceBus son lo suficientemente flexibles como para adaptarse a cualquier presupuesto, como lo indica el amplio espectro de clientes, y pueden justificarse bien a la gerencia. Por supuesto, con MassTransit, la licencia es gratuita.
Espero que eso ayude de algún modo.
Si tuviera que resumir, esto es lo que diría:
Si necesita soporte comercial, vaya a NServiceBus. Si te sientes cómodo con el uso de foros como medio de apoyo, MassTransit es una gran opción. Los desarrolladores han sido muy receptivos a nuestros problemas hasta el momento. Si elige MassTransit, ahora elegirá entre MSMQ y RabbitMQ. Si necesita DTC vaya con MSMQ. Si quieres más funciones y una mejor administración, ve con RabbitMQ.
En nuestro proyecto, cambiamos de NServiceBus a MassTransit por dos razones:
- MassTransit es gratis
- Nos encanta RabbitMQ
He usado ambos marcos. He usado MassTransit por más tiempo que NServiceBus. Estos son los aspectos más destacados cuando los veo.
Costo:
- MassTransit tiene licencia de Apache 2.0 y es gratuito para uso de producción comercial, mientras que NServiceBus no lo es.
Apoyo:
- Como Udi mencionó, hay una opción para el soporte comercial de NServiceBus, no lo he visto para MassTransit.
Transporte:
- MassTransit admite MSMQ y RabbitMQ
-
NServiceBus solo admite MSMQRabbitMQ es compatible con NServiceBus 4+
RabbitMQ vs MSMQ:
- MSMQ admite DTC (coordinador de transacciones distribuidas) para transacciones que involucran procesos múltiples en máquinas potencialmente múltiples (por ejemplo, servidor SQL, servicio de Windows)
- RabbitMQ tiene una excelente interfaz de administración
- MSMQ ha existido por más tiempo y es un producto de Microsoft
- RabbitMQ es más nuevo, de código abierto, gratuito y patrocinado por VMWare
- MSMQ está instalado en la mayoría de las máquinas con Windows de forma predeterminada
Udi Dahan y los chicos de MassTransit (Chris Patterson, Dru Sellers y Travis Smith) son personas brillantes.
Siempre puedes usar Shuttle (FOSS): https://github.com/Shuttle/shuttle-esb :)
Documentación (siempre mejorando): http://shuttle.github.io/shuttle-esb/
El proyecto Shuttle lleva funcionando casi 2 años y se utilizan sistemas de producción. Será una cuestión de elegir lo que resuene contigo.
NServiceBus tiene una buena trayectoria. Lo he usado anteriormente en un sistema de producción (1.9) pero no desde que se comercializó (el punto en el que comencé con Shuttle).
No he probado MassTransit.
Supongo que todas sus opciones tendrán los conceptos básicos (comando / evento / pub-sub). Sin embargo, NServiceBus tiene sagas y el bus de datos, aunque considero que es bastante fácil manejar datos fuera del bus de servicio, como en los manejadores de mensajes de su punto final. No sé si MassTransit tiene sagas / bus de datos pero Shuttle ciertamente no lo tiene.
Otra consideración es, probablemente, cómo pretende utilizar el bus de servicio. Si va a ser parte de un producto, entonces para una opción comercial como NServiceBus, deberá considerar las implicaciones de costos para los usuarios de su producto y, aunque todavía es algo que debe considerarse para el desarrollo interno, sin duda puede ser justificado.