De Wikipedia, la enciclopedia libre
Ir a navegaciónSaltar a buscar

En la arquitectura de software , un patrón de mensajería es un patrón arquitectónico que describe cómo dos partes diferentes de una aplicación o sistemas diferentes se conectan y se comunican entre sí. Hay muchos aspectos del concepto de mensajería que se pueden dividir en las siguientes categorías: mensajería de dispositivos de hardware (telecomunicaciones, redes informáticas, IoT, etc.) e intercambio de datos de software (los diferentes formatos de intercambio de datos y capacidades de software de dicho intercambio de datos). A pesar de la diferencia en el contexto, ambas categorías exhiben rasgos comunes para el intercambio de datos.

Conceptos generales del patrón de mensajería

En telecomunicaciones , un patrón de intercambio de mensajes ( MEP ) describe el patrón de mensajes requerido por un protocolo de comunicaciones para establecer o utilizar un canal de comunicación . El protocolo de comunicaciones es un formato que se utiliza para representar el mensaje que todas las partes que se comunican están de acuerdo (o son capaces de procesar). El canal de comunicación es la infraestructura que permite que los mensajes "viajen" entre las partes que se comunican. Los patrones de intercambio de mensajes describen el flujo de mensajes entre las partes en el proceso de comunicación, hay dospatrones de intercambio de mensajes : un patrón de solicitud-respuesta y un patrón unidireccional .

Por ejemplo, al ver contenido en Internet (el canal), un navegador web (una parte que se comunica) usaría HTTP (el protocolo de comunicación) para solicitar una página web al servidor (otra parte que se comunica) y luego generar el resultado devuelto. datos en su forma visual. Así es como funciona el patrón de mensajes de solicitud-respuesta .

Alternativamente, en redes de computadoras, tenemos el protocolo de red UDP . Se utiliza con el patrón de mensajería unidireccional , [1] donde la parte emisora ​​no está interesada en si el mensaje llega a alguna parte receptora, ni espera que ninguna de las partes receptoras produzca un mensaje de "respuesta".

Comunicación del dispositivo

Esta sección trata sobre el intercambio de datos entre dispositivos de hardware. Para que los dispositivos puedan leer e intercambiar datos, usarían un protocolo específico de hardware (como la señal de radio) que es generado por un dispositivo de hardware que actúa como parte emisora ​​(la torre de radio), y puede ser interpelado por otro dispositivo de hardware que es la parte receptora (la radio de su cocina, por ejemplo). Con el ejemplo de la radio, tenemos un patrón de comunicación unidireccional y el protocolo de intercambio de mensajes es la propia señal de radio.

La comunicación de dispositivos también puede referirse a cómo los dispositivos de hardware en un sistema de intercambio de mensajes habilitan el intercambio de mensajes. Por ejemplo, al navegar por Internet, varios dispositivos diferentes funcionan en conjunto para enviar el mensaje a través del tráfico de Internet: enrutadores, conmutadores y adaptadores de red, que a nivel de hardware envían y reciben señales en forma de paquetes TCP o UDP. . Cada uno de estos paquetes podría ser referido por sí mismo como un mensaje si limitamos nuestra visión a un par de dispositivos de hardware que se comunican entre sí, mientras que en el sentido general de la comunicación por Internet, una serie de paquetes ordenados secuencialmente forman juntos un mensaje significativo. como una imagen o una página web.

Comunicación de software

Esta sección describe el concepto de comunicación por mensajería entre sistemas de software. A diferencia de las comunicaciones de dispositivos, donde la forma de los datos del mensaje se limita a los protocolos admitidos por el tipo y las capacidades de los dispositivos involucrados (por ejemplo, en las redes de computadoras tenemos los protocolos TCP y UDP, un walkie-talkie enviaría ondas de radio en una frecuencia específica , y una baliza mostraría secuencias de código Morse que una persona podría leer), un software puede establecer formatos de intercambio de datos más complejos y sólidos. Esos formatos serían traducidos por la parte emisora ​​en una forma entregable por el hardware subyacente, y luego decodificados por la parte receptora del formato específico del hardware a una forma conforme al protocolo original establecido por los sistemas de software de comunicación.Este intercambio de datos de alto nivel permite transferir información en una forma más legible por humanos y también permite el uso de técnicas de cifrado y descifrado de software para hacer que la mensajería sea segura. Además, el intercambio de mensajes de software permite más variaciones delpatrón de intercambio de mensajes que ya no se limitan a los enfoques simples de solicitud-respuesta y unidireccionales . Y por último, pero no menos importante, los sistemas de comunicación de software son capaces de proporcionar varios canales para el intercambio de datos que se pueden utilizar para optimizar la entrega de mensajes o para establecer reglas complejas de selección y filtrado que ayuden a decidir qué partes recibirán ciertos mensajes. Esto habilita la posibilidad de enrutamiento de mensajes orquestado por software . Como resultado de lo último, los conceptos de un tema (donde todas las partes receptoras en un grupo objetivo recibirían una copia del mensaje) y una cola (donde solo una de las partes de un grupo objetivo recibiría el mensaje).

Como se mencionó anteriormente, la mensajería de software permite más opciones y libertad en los protocolos de intercambio de datos. Sin embargo, esto no sería muy útil a menos que las partes comunicantes acuerden los detalles del protocolo involucrado, por lo que existen varios protocolos de mensajería de software estandarizados. Esta estandarización permite que diferentes sistemas de software, generalmente creados y mantenidos por organizaciones independientes, y que podrían estar operando en diferentes dispositivos de hardware (servidores, computadoras, dispositivos inteligentes o controladores de IoT), participen en el intercambio de datos en tiempo real.

A continuación se enumeran algunos de los protocolos de mensajería de software más populares, que todavía se utilizan en la actualidad. Cada uno de ellos proporciona significados extendidos al concepto de mensajería descrito en la sección anterior.

SOAP

El término patrón de intercambio de mensajes tiene un significado extendido dentro del protocolo de acceso a objetos simples ( SOAP ). [2] [3] Los tipos de SOAP MEP incluyen:

  1. In-Only : esto es equivalente a unidireccional . Un intercambio de mensajería unidireccional estándar en el que el consumidor envía un mensaje al proveedor que proporciona solo una respuesta de estado.
  2. Robusto In-Only : este patrón es para intercambios de mensajes unidireccionales confiables. El consumidor inicia con un mensaje al que el proveedor responde con el estado. Si la respuesta es un estado, el intercambio está completo, pero si la respuesta es una falla, el consumidor debe responder con un estado.
  3. In-Out : esto es equivalente a solicitud-respuesta . Un intercambio de mensajes bidireccional estándar en el que el consumidor inicia con un mensaje, el proveedor responde con un mensaje o falla y el consumidor responde con un estado.
  4. Entrada-Opcional-Salida : Un intercambio de mensajes bidireccional estándar donde la respuesta del proveedor es opcional.
  5. Solo de salida : lo contrario de Solo de entrada. Es principalmente compatible con la notificación de eventos. No puede activar un mensaje de error.
  6. Robusto solo de salida : similar al patrón de solo salida, excepto que puede desencadenar un mensaje de error. El mensaje saliente inicia la transmisión.
  7. Out-In : lo contrario de In-Out. El proveedor transmite la solicitud e inicia el intercambio.
  8. Salida-Opcional-Entrada : Lo contrario de Entrada-Opcional-Salida. El servicio produce un mensaje saliente. El mensaje entrante es opcional ("Entrada opcional").

ØMQ

La biblioteca de cola de mensajes ØMQ proporciona los llamados sockets (una especie de generalización sobre los sockets tradicionales de IP y Unix ) que requieren indicar un patrón de mensajería que se utilizará y están optimizados para cada patrón. Los patrones básicos de ØMQ son: [4]

  • Solicitud-respuesta conecta un conjunto de clientes a un conjunto de servicios. Este es unpatrón de distribución de tareas y llamada a procedimiento remoto . [ aclaración necesaria ]
  • Publicar-suscribirse conecta un conjunto de editores a un conjunto de suscriptores. Este es un patrón de distribución de datos. [ aclaración necesaria ]
  • Push-pull conecta los nodos en un patrón de abanico de entrada / salida que puede tener varios pasos y bucles. Este es un patrón de recolección y distribución de tareas en paralelo. [ aclaración necesaria ]
  • El par exclusivo conecta dos enchufes en un par exclusivo. Este es un patrón de bajo nivel para casos de uso avanzados específicos.

Cada patrón define una topología de red particular. Solicitud-respuesta define el llamado "bus de servicio", publicación-suscripción define "árbol de distribución de datos", push-pull define "canalización en paralelo". Todos los patrones están diseñados deliberadamente de tal manera que sean infinitamente escalables y, por lo tanto, utilizables a escala de Internet. [5]

DESCANSO

El protocolo REST es un protocolo de mensajería construido sobre el protocolo HTTP y, de manera similar, utiliza el patrón de solicitud-respuesta de intercambio de mensajes. Si bien el objetivo principal de HTTP es entregar páginas web y archivos a través de Internet que están dirigidos a un usuario final humano, el protocolo REST se usa principalmente para la comunicación entre diferentes sistemas de software y tiene un papel clave en los microservicios.patrón de arquitectura de software. Entre las cualidades notables del protocolo REST está que es lo suficientemente versátil como para representar datos en muchos otros formatos (típicamente JSON y XML) y que proporciona descriptores de metadatos adicionales para el mensaje que representa. Los descriptores de metadatos siguen los estándares HTTP al estar representados como encabezados HTTP (que están estandarizados por el protocolo HTTP subyacente) y, por lo tanto, podrían usarse como instrucciones para la parte receptora sobre cómo interpretar la carga útil del mensaje. Por eso, REST mejora en gran medida el desarrollo de un sistema de software que es capaz de comunicarse con otro sistema de software, ya que los desarrolladores solo necesitan conocer el formato de nivel superior de la carga útil del mensaje (el modelo JSON o XML). La comunicación HTTP real generalmente se maneja mediante una biblioteca de software o un marco.Otra gran cualidad del protocolo REST es que es adecuado para construir otra semántica de protocolo sobre él, que es el ejemplo conHATEOAS .

Ver también

Referencias

  1. ^ Erl, Thomas (2005). Arquitectura orientada a servicios: conceptos, tecnología y diseño . Indiana: Educación de Pearson. pag. 171. ISBN 0-13-185858-0.
  2. ^ http://www.w3.org/TR/soap12-part1/#soapmep SOAP MEPs en SOAP W3C Recomendación v1.2
  3. ^ Lenguaje de descripción de servicios web (WSDL) Versión 2.0: MEP adicionales
  4. ^ Guía de usuario de ØMQ
  5. ^ La capa de escalabilidad llega a la pila de Internet

Enlaces externos