Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


Barra lateral

Proyecto Integral de Ingeniería del Software
Metodologías Ágiles
Trabajo Fin De Grado
Guía Memoria TFG

Colecciones

Otros

dad:patrones_de_integracion

Patrones de Integración

Las aplicaciones actuales interaccionan unas con otras y le hacen frente a los siguientes problemas:

  • Las redes son lentas y no fiables
  • Las aplicaciones son diferentes: Framework, sistema, codificación y codificación de los datos.
  • El cambio es inevitable, las aplicaciones evolucionan constantemente.

Los desarrolladores suelen adoptar las siguientes soluciones:

  • Transferencia de ficheros.
  • Base de datos compartida.
  • Invocación de procesos remotos.
  • Envío de mensajes.

Elementos

Mensaje

es una estructura de datos, puede ser un string, byte array, registro o un objeto Se puede interpretar como:

  • Dato
  • Una descripción de orden a ejecutar en el receptor
  • Descripción de un evento producido en el emisor

Tiene 2 partes:

  • Body
  • Header

Canal

Son vías lógicas que conectan los programas y el listado de mensajes.

Se comportan como una colección de mensajes.

Se comparten entre ordenadores.

Múltiples aplicaciones pueden usarlos simultáneamente.

Sender y Receiver

Lo que serían el emisor y el receptor

Sistema de mensajería

El envío de mensajes se realiza a través de un sistema de mensajería. Hay que diferenciar entre sistema de mensajería y una base de datos:

  • Un sistema de mensajería gestiona mensajes
  • Un gestor de base de datos gestiona persistencia

Pasos para transmitir un mensaje

  1. Create: El emeisor crea un mensaje y guarda los datos
  2. Send: el emisor añade el mensaje al canal
  3. Deliver: El sistema de mensajería lo entrega al receptor
  4. Receive: El receptor lee el mensaje del canal
  5. Process: el receptor extrae los datos del mensaje

Conceptos importantes

  • Send and Forget: el emisor envía y olvida
  • Store and forward:
    • En el paso 2 el emisor envía y el sistema de mensajería guarda el mensaje en memoria o en disco
    • En el paso 3 el sistema de mensajería entrega el mensaje

Por que usar mensajería

  • Es más inmediato que la transferencia de ficheros
  • Mejor encapsulado que compartir una base de datos
  • Más seguro que la invocación remota de procedimientos (RPC)
  • Permite que dos aplicaciones se comuniquen y transfieran datos sin serializar objetos
  • Permite la comunicación entre aplicaciones con distinto lenguaje, tecnología y plataformas
  • Comunicaciones asíncronas → envío y me olvido
  • Variable timing, emisor y receptor trabajan a su ritmo
  • Mejor rendimiento del receptor que trabaja a su ritmo
  • Comunicación garantizada.
  • Permite operaciones desconectadas en sistemas cuya conexión a la red es limitada
  • Un sistema de mensajería puede actuar como mediador entre diversas aplicaciones
  • Se puede crear un sistema de bloqueo más eficiente cuando se espera un callback.

Retos del envío asíncrono

  • Modelo de programación más complejo
  • No tenemos una secuencia de mensajes: no se puede asegurar cual va el primero y cual va el último
  • Escenarios asíncronos: no se puede usar en escenarios síncronos
  • Pérdida de rendimiento al enviar muchos datos.
  • Protocolos propios de cada fabricante.

El problema de esto es que cambia el modelo de programación ya que estamos hablando de comunicaciones asíncronas. Para solucionar esto se mete un sistema de mensajería con una URL de retorno o leemos de otro sistema de mensajería para que nos confirme la recepción y procesamiento del mensaje. La URL invocaría un servicio para indicar que hemos terminado y continuar.

Implicaciones

  • No existe un único hilo de ejecución, varios subprocesos tienen subprocedimientos
  • El emisor tiene que procesar los resultados incluso cuando está con otra tarea
  • El emisor debe detectar que subproceso generó el resultado recibido y combinarlo con los otros resultados
    • No se conoce el orden de llegada

Motivación

  • Un patrón es una solución general correcta para un problema repetido y común.
  • No es la solución en sí, es un esquema o una guía.

Resumen

  • Patones básicos
    • Message channel
    • Message
    • Pipes and filters
    • Message router
    • Message translator
    • Message endpoint
  • Canales de Mensajes
    • Point to point channel
  • Construcción de Mensajes
    • Command message
    • Document message
  • Enrutamiento de mensajes
    • Message filter
    • Splitter
    • Aggregator

Patrones

Message Channel

Una aplicación necesita comunicarse con otra mediante mensajería, se implementa conectando la aplicación mediante el uso de un canal de mensajes. Una aplicación escribe información en un extremo del canal y otra lee la info del otro extremo.

Message

Se necesita que dos aplicaciones conectadas por un canal de mensajes intercambien informacion. Para ello se empaqueta la info en un mensaje, un conjunto de datos que el sistema de mensajería puede trasnmitir a través del canal.

Pipes and Filters

Se busca ejecutar tareas de procesamiento complejas sobre un mensaje manteniendo la independencia y la flexibilidad. Para ello se usa le estilo arquitectónico de tuberías y filtros para dividir las tareas de procesamiento largas en secuencias de pasos pequeños e independientes llamados filtros que son conectados por canales de mensajes llamados tuberías.

Message Router

Se busca desacoplar pasos de procesamiento individuales de manera que los mensajes puedan pasar por distintos filtros dependiendo de una serie de condiciones.

Message Translator

En sistemas con formatos de datos diferentes se busca comunicarlos entre sí usando mensajería. Apara ello se utiliza un tipo especial de filtro que traduzca los mensajes o aplicaciones para traducir los mensajes de un sistema a otro.

Message Endpoint

Una aplicación se conecta a un canal de mensajería para enviar y recibir mensajes. Para ello se conecta la aplicación a un canal de mensajes utilizando un extremo de mensajería, un cliente del sistema de mensajería que la aplicación puede usar para enviar y recibir mensajes.

point to point

Publish-Suscribe Channel

Un emisor envía un evento a todos los receptores interesados. Se envia el elemento a través del canal publicar-suscribir que entrega una copia del evento a cada receptor interesado en el mismo.

Channel adapter

Se conecta una aplicación cerrada a un sistema de mensajería de manera que pueda enviar y recibir mensajes. Se usa un adaptador que puede acceder a la API o los datos de la aplicación y publicar mensajes con estos datos en el canal. Así mismo, el adaptador permitirá recibir mensajes e invocar funcionalidades de la aplicación.

Message Bus

Permite a aplicaciones trabajar juntas de una forma desacoplada, de manera que las aplicaciones puedan ser eliminadas o añadidas sin afectar a otras.

Command Message

usa la mensajería para invocar un procedimiento de otra aplicación.

Document Message

Utiliza la mensajería para transferir datos entre aplicaciones.

Event Message

Usar la mensajería para transmitir eventos entre aplicaciones. Utiliza un mensaje evento para la notificación asíncrona de eventos entre aplicaciones.

Message Filter

Busca evitar que una aplicación reciba ciertos mensajes. Se usa para eliminar mensajes no deseados de un canal de acuerdo a ciertos criterios dados.

Splitter

Procesa un mensja e que contiene múltiples elementos, troceándolos

Content Enricher

Comunica una aplicación con otra si el mensaje de origen no tiene toda la información requerida para alcanzar el destino.

Messaging Gateway

Hace un salto entre 2 sistemas de mensajerías distintas.

Message Dispatcher

Coordinar a múltiples consumidores en un único canal

Control Bus

Administra eficientemente un sistema de mensajería distribuido. Usa un bus de control para gestionar una solución de integración. El bus usa los mismos mecanismos que el sistema de mensajería pero usa sus propios canales y mensajes para transmitir datos relevantes para la gestión y monitorización del sistema.

dad/patrones_de_integracion.txt · Última modificación: 2023/12/14 10:22 por thejuanvisu