nServiceBus vs Mass Transit vs Rhino Service Bus vs otro?

104

Simplemente haciendo algunos picos rápidos para posiblemente usar un sistema de mensajería para procesar archivos que están en un sistema de flujo de trabajo bien desacoplado.

¿Cuáles son los pros y los contras que la gente ha encontrado al usar cada uno de los marcos anteriores? ¿Cuáles son las ventajas de usar estos en comparación con un sistema MSMQ enrollado a mano con enlaces WCF y / o soluciones que no son MSMQ?

mwjackson
fuente

Respuestas:

71

Recomendaría mantenerse alejado de las soluciones elaboradas a mano, ya que hay un montón de cosas algo difíciles que deben resolverse correctamente, como cómo se manejan las transacciones, cómo las excepciones causan retrocesos, cómo dejar de retroceder sin cesar (mensajes dudosos), cómo integrarse con flujos de trabajo de larga duración para que los límites de la gestión estatal se alineen y más.

Probablemente desee algún tipo de infraestructura de mensajería duradera / transaccional, por lo que si no usa MSMQ, se quedará con Service Broker en la plataforma de Microsoft o alguna otra alternativa como ActiveMQ. MSMQ tiene la ventaja de que ya está instalado en todas las máquinas con Windows, a diferencia de Service Broker, que no lo está.

En términos de elegir entre NServiceBus, Mass Transit y Rhino Service Bus, esta respuesta de Stackoverflow que compara NServiceBus con MassTransit sería un buen lugar para comenzar.

En nuestra versión 3.1, presentamos NSB Studio, un conjunto de herramientas de modelado integradas de Visual Studio que le permiten modelar su sistema en un nivel superior de abstracción y hacer que gran parte de la configuración e inicialización de NServiceBus se realice automáticamente. Yo diría que esto realmente inclina la balanza a favor de NServiceBus.

Espero que ayude.

Descargo de responsabilidad: soy el autor de NServiceBus.

Udi Dahan
fuente
25
Rhino Service Bus está muy centrado en Castle. Si no está familiarizado / cómodo con Castle como parte central de la arquitectura de su aplicación, es posible que tenga algunas dificultades con él. NServiceBus y Mass Transit o más independientes de contenedores. NServiceBus viene con un "servidor de aplicaciones" que maneja el alojamiento de su código así como también cambia las implementaciones de infraestructura activa (como en memoria, MSMQ y DB) a medida que hace la transición de su sistema de desarrollo a prueba a producción. También viene con funciones de prueba unitaria para su lógica de manejo de mensajes y procesos de larga ejecución. No creo que MassTransit los tenga.
Udi Dahan
35
Probablemente valga la pena señalar que Udi es el AUTOR de NServiceBus, por lo que su opinión puede estar un poco sesgada aquí. :) Habiendo dicho eso, estoy completamente de acuerdo y recomendaría el uso de NServiceBus por las mismas razones que él.
skb
8
@skb: ¡de acuerdo! Udi, realmente deberías dar algún tipo de descargo de responsabilidad al responder a las preguntas de nservicebus, ¡particularmente a las como esta!
Andy
14
Todavía me estoy acostumbrando al hecho de que las personas ahora están descubriendo NServiceBus que no saben que yo lo creé
Udi Dahan
5
@UdiDahan: ¿Cómo es nServiceBus "código abierto"? Publicar el código fuente sin una licencia para usarlo no hace nada por el espíritu del código abierto, que es compartir. Apoyo plenamente su derecho a ganarse la vida vendiendo software (yo hago lo mismo), pero creo que sería mucho más preciso si no promocionara la solución (post 2.0) como código abierto.
Eric J.
52

NServiceBus es un buen producto, pero tenga cuidado con los problemas de licencia. Tiene una tendencia a cambiar su política de licencias como lo desean los autores. Eche un vistazo, por ejemplo, a la información de la licencia anterior.

Puede suceder que en medio del desarrollo de su proyecto descubra que tiene que pagar mucho dinero por NServiceBus.

También la versión gratuita tiene limitaciones de rendimiento.

MassTransit es un código abierto absolutamente gratuito, no tiene limitaciones y está bajo licencia Apache 2.0.

No he utilizado Rhino Service Bus .

Alex Burtsev
fuente
1
En realidad, proporcionaremos una nueva licencia con la versión 3.1 que le permitirá ejecutarla en varias máquinas de forma gratuita (aunque a niveles más bajos de rendimiento).
Udi Dahan
11
MassTransit es tu hombre. Es gratis; sin restricciones de licencia. Si puede prescindir de un diseñador de flujo y puede enrollar el suyo a mano, no puede superarlo. También puede colocarse sobre RabbitMQ y MSMQ tiene complementos comunitarios de Azure. MassTranit + RabbitMQ ha demostrado ser un excelente entorno estable y muy rápidamente le permite poner a sus consumidores / productores en funcionamiento.
Bigtoe
3
También considere EasyNetQ (envoltura simple alrededor de rabbitMQ) UDI sorprendido no pesa más en las discusiones con sugerencias 4 buenas alternativas 2 nServiceBus? Lo que quiero decir. ayudar a la gente en el viaje de la mensajería en las primeras etapas. Hay muchas maneras 2 buenas y sencillas (gratuitas) de empezar; realmente no importa lo que uses siempre que sea fácil e idealmente gratis; (gratis para jugar y gratis para implementar de verdad, y también gratis para cambiar más adelante) Una vez que esté creciendo, desarrollará su propia lista de preocupaciones; En ese momento, la decisión de obtener productos más maduros será fácil, con justificaciones de costos fáciles, por ejemplo, nservicebus.
Snowcode
A partir de MassTransit 4.0, MSMQ ya no es compatible ( masstransit-project.com/MassTransit )
MyGGaN
25

Una actualización del estado de Rhino vs NServicebus:

http://www.infoq.com/news/2012/04/nservicebus3-0

InfoQ a Ayende: usted mismo ha escrito anteriormente un bus de servicio para .NET, a saber, el bus de servicio de Rhino. ¿Deberían los usuarios de Rhino Service Bus reconsiderar ahora y pasar a NServiceBus?

Ayende: Construí Rhino Service Bus alrededor de 2008. Lo construí principalmente porque no estaba contento con el estado de los otros autobuses de servicio en ese momento. He tenido diferentes preocupaciones y direcciones al construir mi autobús de servicio, pero eso fue hace 4 años. En ese tiempo, creo que NServiceBus hizo grandes avances para convertirse en un producto más fácil de usar y tener una historia de desarrollo mucho mejor lista para usar. Si estuviera comenzando con los autobuses de servicio hoy, dudo mucho que construyera los míos propios.

Ciprian Teiosanu
fuente
9

una posible desventaja de cualquier cosa basada en MSMQ es la restricción del tamaño máximo de mensaje. IIRC tiene aproximadamente 4 MB, con lo que podría encontrarse fácilmente si está tratando con archivos grandes y almacenando el contenido del archivo dentro del mensaje.

secado rápido
fuente
7
Curiosamente, la mayoría de las colas basadas en la nube ni siquiera admiten cargas útiles de 100 KB, por lo que esto es algo que muchas aplicaciones deberán tener en cuenta en el futuro.
Udi Dahan
32
En los patrones de integración empresarial (Woolf, Hohpe), el patrón de verificación de reclamos aborda específicamente esta preocupación. Una referencia a la gran carga útil se mantiene solo en el mensaje, manteniendo el mensaje pequeño. Los mensajes de gran tamaño pueden causar estragos en el rendimiento de un sistema de mensajería.
Chris Patterson
4
Esto no es un problema con NServiceBus, ya que tienen un concepto de bus de datos, que funciona de manera transparente con las limitaciones de tamaño.
Khalid Abuhakmeh