EMS, ESB y MOM, JMS
(3)
Buena pregunta: la diferencia crucial entre un bus de servicio y un sistema de mensajería es la convención de datos de su sistema de mensajería. Un sistema de mensajería generalmente le permite enviar todo: blobs binarios, XML, listas separadas por comas, etc. Por lo tanto, la aplicación A puede enviar una cadena separada por comas a la aplicación B y B envía algo de XML a la aplicación C y C envía otro tipo de XML a la aplicación D. Eso es un mensaje, pero no un ''bus de servicio''. Se podría decir que un sistema de mensajería está "sin tipo" (estructura dinámica) mientras que un ESB está "escrito" (estructura estática).
En un ''bus de servicio'' tiene una definición de datos común para todas las aplicaciones y adaptadores en ese bus (podría ser XML con un XSD compartido). Objetos de datos comunes (CDOs). Cualquier cosa que se conecte DEBE enviar información que se adhiera a esta definición de datos. El ESB debe admitir la carga, el intercambio y la creación de versiones de esta definición de datos común. La gran ventaja es que puede conectar un componente (por ejemplo, un Message Broker) y lo hace sin tener que saber qué aplicación envió estos datos y hacia dónde se dirigen estos datos.
Las ventajas y desventajas de Messaging vs. ESB son similares a otras opciones no tipificadas / tipeadas: REST vs. SOAP, XML no validado vs. XML con XSD, Groovy vs. Java, ... Algunas personas disfrutarán de la estructura adicional (se ve bien en papel: a los administradores les gusta) - algunos lo odiarán (las cosas se rompen cuando las versiones cambian, por una pequeña adición tienes que actualizar todo) a los hackers no les gusta mucho ;-)
Volviendo a sus preguntas (reordenado)
Middleware orientado a mensajes (MOM): bibliotecas de software para varios idiomas con un agente (o no) para comunicar "mensajes" entre aplicaciones. Un paso adelante de la comunicación TCP / IP. Los ''mensajes'' son objetos estructurados o cadenas de texto o datos binarios. Por lo general, usted tiene una confiabilidad adicional sobre TCP / IP o UDP. Algunos ejemplos: TIBCO RV y EMS, IBM MQ, Apache ActiveMQ, ZeroMQ, ...
Java Messaging Service (JMS): la definición de una API común para MOM. Las personas se quejaron de que cuando su aplicación cambia de MOM ''X'' a MOM ''Y'', debe volver a escribir el código de mensajería. Si codifica contra JMS, simplemente puede cambiar las bibliotecas y la misma aplicación que solía trabajar con TIBCO EMS de repente funciona con ActiveMQ (o viceversa)
Enterprise Messaging System (EMS): la implementación de TIBCO de JMS (nombre del producto: TIBCO EMS)
Enterprise Service Bus (ESB): un ESB utiliza un middleware orientado a mensajes para integrar aplicaciones, bases de datos, corredores, etc. Un ESB es un MOM con una estructura de datos agregada y administración de definición de estructura. Al conectar un nuevo componente a un ESB, puede esperar más "compatibilidad" fuera de la caja que cuando se conecta a un MOM. En un ESB hay estándares más altos sobre lo que debe hacer un componente para conectarse. El ESB de TIBCO se llama ActiveMatrix, creo.
¿Cuál es la relación y las diferencias entre los siguientes términos?
- Sistema de mensajería empresarial (EMS)
- Enterprise Service Bus (ESB)
- Middleware orientado a mensajes (MOM)
- Servicio de mensajería de Java (JMS)
EMS: cualquier solución que permita la aplicación múltiple sobre un protocolo orientado a mensajes en lugar del protocolo RPC. Así que, básicamente, las aplicaciones que interactúan están más vinculadas a los datos de mensajes que al transporte.
MOM: Creo que de nuevo puede ser considerado igual que EMS.
ESB: Es una forma de diseñar un sistema de mensajería empresarial. Otra forma es el modelo de hub y radios. Básicamente, un sistema de mensajería típico implica la transformación, la mediación, la auditoría, el enrutamiento y la seguridad, etc. ESB vs hub-radios especifica qué componente se ocupa de qué parte.
JMS: es la API uniforme proporcionada por la plataforma Java que permite al desarrollador trabajar directamente con la API de JMS y no debe preocuparse por el marco de mensajería subyacente. Una implementación de mensajería tiene que ser compatible con JMS para poder trabajar con las API de JMS.
Si bien la respuesta de @ ag112 expande "EMS" para significar "sistema de mensajería empresarial," el acrónimo es un tanto ambiguo y probablemente la expansión más común de "EMS" se refiera al servicio de mensajería empresarial de TIBCO , que es la plataforma propietaria particular de TIBCO que soporta Java La Specification servicio de mensajería (JMS) y también agrega algunas extensiones propietarias. Un Enterprise Service Bus (ESB) es una capa de abstracción de middleware de software que integra componentes de software en grandes sistemas a través de un "motor de mensajería" empresarial basado en eventos, generalmente abierto y basado en estándares. Estas construcciones de " middleware orientado a mensajes (MOM) " se usan a menudo en la integración de software y probablemente se verán en implementaciones de Arquitectura Orientada a Servicios (SOA) .