Pregunta

¿Cuáles son las motivaciones para el uso de un mensaje basado en el sistema?

Estoy viendo un montón sobre el servicio de autobuses, tales como NServiceBus y El Transporte Masivo y me pregunto lo que los beneficios de la metodología básica son.

¿Fue útil?

Solución

Hay varias ventajas de usar el mensaje de los sistemas basados en.

  1. Mensajes de forma bien definida y tecnología neutral interfaz entre las aplicaciones.
  2. Permite el acoplamiento flexible de aplicaciones.
  3. Un montón de opciones de rendimiento, optimización y escalado:
    • Implementar solicitante y el proceso de servicio en hardware diferente
    • Varios solicitantes compartir único servidor
    • Varios solicitantes de compartir varios servidores
  4. Los diversos mensajería middlewares implementar la mensajería común patrones de forma independiente de la aplicación.
    • Solicitud/Respuesta
    • Fuego y Olvidarse de actualizaciones sin conexión
    • Publicación/Suscripción
  5. Muchos de los productos de middleware identificador de mensaje de transformación (por ejemplo,SWIFT SWIFTXML).
  6. Muchos de los productos de middleware puede descomponer una sola solicitud de gran tamaño en varios más pequeños solicitudes.
  7. Casi todos los de soporte de plataformas múltiples.

Por cierto los dos líderes del mercado en esta área son de IBM con sus Websphere MQ y productos relacionados, y, TIBCO con su Bus de Servicios Empresariales.

Otros consejos

Un basadas en mensajes de arquitectura de-parejas productores y consumidores de mensajes, tanto en el tiempo y en el espacio. Esto tiene muchas ventajas:

  • productores y consumidores pueden ejecutarse en diferentes máquinas
  • productores y consumidores pueden ejecutar en diferentes momentos.
  • productores y consumidores pueden ejecutarse en diferentes plataformas de hardware / software (que sólo necesitan comprender el mismo protocolo de mensajes)
  • es fácil coordinar múltiples productores / consumidores (por ejemplo, para puestos de trabajo de cálculo intensivo que necesitan varias máquinas, como Dave Markle ha descrito)
  • mayor estabilidad cuando los servicios están temporalmente unavailble (por ejemplo, cuando se hace el procesamiento de pedidos, usando un sistema de mensajería puede ayudar a evitar "caer" órdenes)

Se pierde la mayor parte de estos beneficios cuando se hace la comunicación del estilo RPC (es decir, cuando se bloquea a la espera de respuestas de servicio)

Un caso de uso es cuando se tiene un conjunto de recursos que pueden trabajar en un determinado artículo, y una lista de trabajo que debe ser distribuido de una manera escalable.

Una vez tuve un proyecto en el que tenía que hacer la integración de mainframe con un número de 3270 raspadores de pantalla (todo lento). Podría tener un máximo de 10 de estos procesos abiertos en una caja a la vez. Yo tenía miles de cuentas a la pantalla-raspa y actualización, así que poner el trabajo en una cola, y mis máquinas (que tenía sobre 3 del em) acaba de recoger los elementos de trabajo de la cola de mensajes (MSMQ) e hizo su captura de imágenes, y eso fue todo. Yo podría girar una nueva máquina, o desactivo los antiguos sin interrumpir el flujo de trabajo, por lo que era agradable.

los beneficios son realmente a la disociación de las partes de la aplicación. Una vez que haya establecido el autobús, y se añaden aplicaciones, se puede extender fácilmente su aplicación mediante la adición de nuevas piezas que se pueden garantizar no afectará a las otras partes. Es una muy buena manera de añadir continuamente a un sistema en el tiempo.

por ejemplo. tenemos un sistema como este, cada comando se implementa como parte de la interfaz gráfica de usuario en general, si queremos añadir una nueva característica, o modificar una existente, que acabamos de escribir una nueva pieza y lo añadimos al sistema. Cuando se llama, no tiene dependencias en el resto. Esto significa que podemos extender nuestra aplicación muy fácilmente. Además, tenemos un paso de mensajes entre los nodos de nuestra red - cuando algo se cambia en 1 ordenador, se envía un mensaje a todos los demás para que puedan actualizar a sí mismos. Tenemos un centenar de mensajes diferentes para distintos eventos, por lo que podemos extender el sistema al dejar caer un nuevo servicio en el que reacciona a los mensajes apropiados.

arquitecturas de paso de mensajes suelen tener las mismas características que los servicios web, que tienen servicios discretos que puede llamar, puede agregar otros nuevos con facilidad.

(! Y caro)

No creo que el paso de mensajes requieren arquitecturas de lujo productos de middleware embargo, Windows se ejecuta en un mensaje que pasa arquitectura - todos los WM_ * mensaje que se transmite a una ventana .. es así, un mensaje, y creo que muestra el mejor ejemplo de la arquitectura - no forma parte de un sistema necesita saber acerca de cualquier otra parte, se puede extender infinitamente como se puede manejar tantos controles como desee en cualquiera de diálogo, etc, etc

.

El paso de mensajes es una arquitectura fabulosa, aunque puede ser más lento que el acoplamiento firmemente su aplicación en conjunto, eso no es mucho de una razón para no usar hoy en día sobre todo si ya está utilizando scripts o aplicaciones .NET.

sistema orientado a mensajes son generalmente buenos para ciertas clases de problemas de integración. Otras alternativas están teniendo un almacén de datos compartido (archivo o base de datos basada tal vez) para las aplicaciones comunicarse o la integración de aplicaciones a través de RPC.

Las ventajas de la mensajería a través de estos patrones de integración es que no son la conexión entre las dos aplicaciones al mismo esquema de almacenamiento de datos y que no está atando las aplicaciones a un punto a otro escenario de integración RPC (que se hace más complejo el más aplicaciones están correspondiente).

Hay también los beneficios de la comunicación asíncrona (como el correo electrónico frente a la charla en línea) y el enrutamiento de mensajes y posibilidades de transformación.

Me ayudó a desarrollar una para un sistema que utiliza C # y comunicación remota, el cliente (un servicio o GUI) podría enviar un mensaje completo con algunos datos personalizados y el destinatario (s) lo recibirían, ya sea la próxima vez que conectan o al instante ). Entonces podrían procesar el mensaje (tomando titularidades de que en el caso de los servicios de distribución de carga). También se utiliza para actualizar interfaces gráficas de usuario cuando los procesos de larga ejecución había terminado.

El sistema de mensajería en sí tenía tuberías configurables que procesan cada mensaje, he aquí algunos ejemplos de algunas de las tuberías que hemos desarrollado:

  • Almacenamiento (creada / guardado el mensaje a la base de datos)
  • Routing (cuando el trabajador por mensaje debe ser enviado)
  • Seguridad (trabajó a cabo si el cliente se le permitió a recibirlo)
  • Eliminar (funciona si el mensaje debe ser eliminado del sistema, lo que significa que los clientes necesitan ser notificado y el mensaje eliminado de su caché y marcado en la base de datos).
  • TakeOwnership (se ocupa de asegurarse un solo cliente puede modificar el estado de un mensaje en un momento tan sólo los mensajes que son propiedad puede ser cambiado)

Así que en respuesta a su pregunta, sistemas de mensajería son un brillante mediante el envío de información sobre cuando no se conoce o que el cliente es.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top