¿Qué es un servicebus y cuándo lo necesito?


101

Escuché hablar sobre NServiceBus , pero realmente no he entendido qué es. Afirman ser "El bus de servicios de código abierto más popular para .net".

Entonces; ¿Qué es un "autobús de servicio" y cuándo lo necesito?


Llego muy tarde a la fiesta, no publicaré esto como respuesta porque no es como tal, pero en resumen, si no sabe por qué necesita uno, es probable que no ... resuelve un problema específico. problema que probablemente no tenga al conectar aplicaciones y darle a su empresa una API centralizada.
Guerra

9
@Wardy, no estaría de acuerdo con su declaración. El hecho de que no entiendas algo o no sepas qué es, no significa que no te ayude saberlo
Cristian Toma

Eso no fue una excusa para la ignorancia, sino más bien señalar que el autobús de servicio es un término que se usa mucho cuando se encuentra con el tipo de problema que resuelve, por lo que lo necesitará o no y, por lo tanto, nunca tendrá que preocuparse. eso.
Guerra

Agregaría esto como una edición, pero cambiaría fundamentalmente la pregunta ... NServiceBus ahora se conoce como "Plataforma de servicio particular" y se puede encontrar en particular.net (que es donde NServiceBus.com redirecciona ahora de todos modos).
Dan Atkinson

Si no conoce el nombre o el concepto de algo que ya existe, es probable que uno escriba el suyo. Por lo tanto, es bueno conocerlos para que pueda usarlos (si es necesario)
noelicus

Respuestas:


80

Puede pensar en un bus de servicio como Ethernet de SOA.

En primer lugar, introduce un lenguaje de identificación de cosas, como una dirección IP en Ethernet. Este nombre no es algo inherentemente físico.

A continuación, tiene algo físico involucrado en cada nodo, como una cola en el caso de un bus para admitir comunicaciones semiconectadas, o una tarjeta Ethernet en la metáfora.

Más allá de lo físico, existe la parte de "protocolo" de la comunicación, como la pila OSI para Ethernet. Con el bus, estas son las bibliotecas cliente utilizadas por el código de la aplicación.

En última instancia, puede considerar que un bus de servicio proporciona el siguiente nivel superior de abstracción para la construcción de sistemas distribuidos. También puede usarlo para la comunicación cliente-servidor para brindarle mensajería unidireccional duradera, así como para que el servidor envíe notificaciones al cliente.

Específicamente, encontrará que NServiceBus es bastante liviano y fácil de usar una vez que haga las paces con el uso de la tecnología de cola: su elección de RabbitMQ, MSMQ, tablas SQL regulares, Amazon SQS, Azure Storage Queues y Azure Service Bus.


¡Gracias! ¡Creo que ahora tengo el panorama general! De hecho, estaba haciendo esta pregunta para estar un poco preparado para la sesión que celebrarán esta noche, pero no parece que
vaya a

12

Consulte el artículo de Wikipedia sobre Enterprise Service Bus .

Un Service Bus actúa como una capa más de abstracción en la búsqueda interminable de implementar una buena Arquitectura Orientada a Servicios. El Service Bus puede manejar parte del trabajo pesado que se encuentra detrás de una buena arquitectura orientada a servicios como mensajería, enrutamiento y coordinación de servicios.

Si no está seguro de por qué querría algo así, le sugiero que lea sobre lo que hace una buena arquitectura orientada a servicios. El libro que realmente me abrió los ojos y demostró la diferencia entre solo tener servicios web y tener una verdadera arquitectura orientada a servicios fue la arquitectura orientada a servicios de Thomas Erl : conceptos, tecnología y diseño.


¿Entonces puedo usarlo para hacer la comunicación entre una aplicación cliente de escritorio y un servidor? Donde el servidor está en casa, eso es.
stiank81

Tú podrías. También puede usarlo para la comunicación entre diferentes servicios, diferentes versiones de diferentes servicios, etc. (incluidas situaciones en las que los servicios usan diferentes protocolos).
Justin Niessner

11

Este término se introdujo con SOA, que en cierto modo es el sucesor (como palabra de moda ) de EAI .

¿Cuándo lo necesitas? Buena pregunta. Viene con mucha complejidad.

Una regla empírica podría funcionar si resuelve más problemas de los que causa.

Ser serio si tiene un entorno heterogéneo y desea alinear (diferentes) aplicaciones (utilizando diferentes tecnologías) con los procesos comerciales. Entonces podría ser útil usar BPEL (pero esto presenta problemas por migración) para orquestación y coreografía.

EDITAR: Lo que no está en wikipedia, es práctica: un ESB puede adaptarse usando conectores especiales, aplicaciones de terminal antiguas para usar con Corba o Java Enterprise, eso es lo que se entiende por interoperabilidad. El inconveniente son los más de 100 "estándares" en torno a SOAP que no cooperan sin un enorme esfuerzo.

Definitivamente lo necesita si tiene que interconectar sistemas de TI dentro de los seis meses posteriores a la fusión de 2 grandes compañías de seguros.


Entonces, en mi aplicación de escritorio que tiene una comunicación "simple" con el lado del servidor, ¿no hay necesidad de ampliarlo con un Bus de servicio? ¿Puede ayudarme a implementar un modelo de inserción desde el servidor? ¿O será más doloroso que beneficio también en este escenario?
stiank81

@ stiank81 lo siento, leí el bus de servicio (Enterprise) y las sinapsis se dispararon. Verifiqué su enlace a NServiceBus, apuntan a lo mismo, no necesita algo así en una aplicación de servidor cliente. Se entiende por concepto para múltiples aplicaciones involucradas en un proceso comercial. ¿Si funcionara para usted? Si resuelve más problemas de los que causa.
apilador

Úselo "si resuelve más problemas de los que causa" ... me encanta.
noelicus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.