En 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 distintos, se conectan y comunican entre sí. El concepto de mensajería abarca muchos aspectos 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 las capacidades de software para dicho intercambio). A pesar de las diferencias de contexto, ambas categorías presentan características comunes en cuanto al intercambio de datos.
Conceptos generales del patrón de mensajería
En telecomunicaciones , un patrón de intercambio de mensajes ( PIM ) describe el patrón de mensajes que requiere un protocolo de comunicación para establecer o utilizar un canal de comunicación . El protocolo de comunicación es el formato utilizado para representar el mensaje, el cual todas las partes comunicantes aceptan (o son capaces de procesar). El canal de comunicación es la infraestructura que permite que los mensajes "viajen" entre las partes comunicantes. Los patrones de intercambio de mensajes describen el flujo de mensajes entre las partes en el proceso de comunicación; existen dos patrones principales : un patrón de solicitud-respuesta y un patrón unidireccional .
Por ejemplo, al visualizar contenido en Internet (el canal), un navegador web (una de las partes comunicantes) utiliza el protocolo HTTP para solicitar una página web al servidor (otra de las partes comunicantes) y, a continuación, renderiza los datos recibidos en su formato visual. Así es como funciona el patrón de mensajería de solicitud-respuesta .
Alternativamente, en redes informáticas, tenemos el protocolo de red UDP . Se utiliza con el patrón de mensajería unidireccional , [ 1 ] donde al remitente no le interesa si el mensaje llega a algún receptor, ni espera que ninguno de los receptores 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, utilizan un protocolo específico de hardware (como la señal de radio), que es generado por un dispositivo de hardware que actúa como emisor (la antena de radio) y que puede ser interpretado por otro dispositivo de hardware que actúa como receptor (por ejemplo, la radio de la cocina). En el caso 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 entre dispositivos también puede referirse a cómo los dispositivos de hardware en un sistema de intercambio de mensajes permiten dicho intercambio. Por ejemplo, al navegar por Internet, varios dispositivos trabajan en conjunto para entregar 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 paquete podría considerarse un mensaje si nos centramos en la comunicación entre dos dispositivos de hardware, mientras que, en el contexto general de la comunicación por Internet, varios paquetes organizados secuencialmente forman un mensaje con sentido, como una imagen o una página web.
Comunicación de software
A diferencia de las comunicaciones entre dispositivos, donde el formato de los datos del mensaje se limita a los protocolos compatibles con el tipo y las capacidades de los dispositivos involucrados (por ejemplo, en redes informáticas tenemos los protocolos TCP y UDP, un walkie-talkie enviaría ondas de radio en una frecuencia específica y una baliza emitirí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 robustos.
Estos formatos serían traducidos por el remitente a un formato compatible con el hardware subyacente, y luego decodificados por el receptor, desde el formato específico del hardware a un formato que cumpla con el protocolo original establecido por los sistemas de software de comunicación. Este intercambio de datos de nivel superior permite transferir información en un formato más legible para el usuario y también posibilita el uso de técnicas de cifrado y descifrado por software para garantizar la seguridad de los mensajes. Además, el intercambio de mensajes por software permite más variaciones del patrón de intercambio , que ya no se limitan a los enfoques simples de solicitud-respuesta y unidireccionales . Por último, pero no menos importante, los sistemas de comunicación por software son capaces de proporcionar diversos canales para el intercambio de datos, que pueden utilizarse para optimizar la entrega de mensajes o para establecer reglas complejas de selección y filtrado que ayudan a decidir qué destinatarios deben recibir ciertos mensajes. Esto posibilita el enrutamiento de mensajes orquestado por software . Como resultado de esto último, han surgido los conceptos de tema (donde todos los destinatarios de un grupo objetivo reciben una copia del mensaje) y cola (donde solo un destinatario de un grupo objetivo recibe el mensaje).
Como se mencionó anteriormente, la mensajería por software ofrece 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, por lo que existen varios protocolos de mensajería por software estandarizados. Esta estandarización permite que diferentes sistemas de software, generalmente creados y mantenidos por organizaciones independientes, y que pueden operar en distintos 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 aún se utilizan en la actualidad. Cada uno de ellos amplía el significado del concepto de mensajería descrito en la sección anterior.
JABÓN
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 MEP de SOAP incluyen:
- Solo de entrada : Esto equivale a unidireccional . Un intercambio de mensajería unidireccional estándar donde el consumidor envía un mensaje al proveedor, quien no envía ningún tipo de respuesta.
- Robusto de solo entrada : Este patrón es para intercambios de mensajes unidireccionales confiables. El consumidor inicia con un mensaje al que el proveedor responde con un estado. Si la respuesta es un estado, el intercambio se completa; pero si la respuesta es un error, el consumidor debe responder con un estado.
- Entrada-Salida : Esto equivale a solicitud-respuesta . Un intercambio de mensajes bidireccional estándar donde el consumidor inicia con un mensaje, el proveedor responde con un mensaje o error y el consumidor responde con un estado.
- Intercambio de mensajes bidireccional estándar en el que la respuesta del proveedor es opcional.
- Solo salida : Lo opuesto a Solo entrada. Principalmente admite notificaciones de eventos. No puede generar mensajes de error.
- Robusto de solo salida : Similar al patrón de solo salida, excepto que puede activar un mensaje de error. El mensaje saliente inicia la transmisión.
- Salida-Entrada : Lo contrario de Entrada-Salida. El proveedor transmite la solicitud e inicia el intercambio.
- Out-Optional-In : Lo contrario de In-Optional-Out. El servicio produce un mensaje saliente. El mensaje entrante es opcional ("Optional-in").
ØMQ
La biblioteca de colas de mensajes ØMQ proporciona los llamados sockets (una especie de generalización sobre los sockets IP y Unix tradicionales ) que requieren indicar un patrón de mensajería para ser utilizado y están optimizados para cada patrón. Los patrones básicos de ØMQ son: [ 4 ]
- El protocolo de solicitud-respuesta conecta un conjunto de clientes con un conjunto de servicios. Se trata de un patrón de llamada a procedimiento remoto y distribución de tareas.
- El modelo de publicación-suscripción conecta a un conjunto de publicadores con un conjunto de suscriptores. Este es un patrón de distribución de datos.
- El mecanismo push-pull conecta nodos en un patrón de abanico hacia afuera /adentro que puede tener múltiples pasos y bucles. Se trata de un patrón de distribución y recolección de tareas en paralelo.
- El par exclusivo conecta dos enchufes en un par exclusivo. Este es un patrón de bajo nivel para casos de uso específicos y avanzados.
Cada patrón define una topología de red particular . El patrón de solicitud-respuesta define el llamado "bus de servicio", el de publicación-suscripción define el "árbol de distribución de datos" y el de envío-recepción define la "tubería paralela". Todos los patrones están diseñados deliberadamente para ser infinitamente escalables y, por lo tanto, utilizables a escala de Internet. [ 5 ]
DESCANSAR
El protocolo REST es un protocolo de mensajería basado en el protocolo HTTP y, de forma similar, utiliza el patrón de solicitud-respuesta para el intercambio de mensajes. Mientras que el objetivo principal de HTTP es entregar páginas web y archivos a través de Internet dirigidos a un usuario final, el protocolo REST se utiliza principalmente para la comunicación entre diferentes sistemas de software y desempeña un papel fundamental en la arquitectura de software de microservicios . Entre las cualidades más destacadas del protocolo REST se encuentra su versatilidad para representar datos en diversos formatos (normalmente JSON y XML) y la provisión de descriptores de metadatos adicionales para el mensaje que representa. Estos descriptores de metadatos siguen los estándares HTTP al representarse como encabezados HTTP (estandarizados por el protocolo HTTP subyacente), por lo que pueden utilizarse como instrucciones para que el receptor interprete el contenido del mensaje. Gracias a ello, REST mejora considerablemente el desarrollo de sistemas de software capaces de comunicarse con otros, ya que los desarrolladores solo necesitan conocer el formato de nivel superior del contenido del mensaje (el modelo JSON o XML). La comunicación HTTP propiamente dicha suele ser gestionada por una biblioteca o un marco de software.
Otra gran cualidad del protocolo REST es que es adecuado para construir otras semánticas de protocolo sobre él, como se ve en el ejemplo de HATEOAS .
Véase también
Referencias
- ↑ Erl, Thomas (2005). Arquitectura orientada a servicios: conceptos, tecnología y diseño . Indiana: Pearson Education. pág. 171. ISBN 0-13-185858-0.
- ↑ http://www.w3.org/TR/soap12-part1/#soapmep MEPs de SOAP en la Recomendación v1.2 del W3C sobre SOAP
- ↑ Lenguaje de descripción de servicios web (WSDL) versión 2.0: MEP adicionales
- ↑ Guía del usuario de ØMQ
- ↑ "La capa de escalabilidad llega a la pila de Internet" . Archivado del original el 28 de mayo de 2019. Consultado el 3 de febrero de 2011 .
Enlaces externos
- Patrones de mensajería en la arquitectura orientada a servicios
- Patrones de integración empresarial - Catálogo de patrones
- Arquitectura de computación distribuida
- protocolos de red
- Comunicación entre procesos
- Middleware orientado a mensajes