Patrones de Integración - Departamento de Lenguajes y Sistemas

Anuncio
12/05/2013
Departamento de Lenguajes y
Sistemas Informáticos
BLOQUE II: Integración de Sistemas Software
Patrones de Integración
Tema 9
Arquitectura e Integración de Sistemas Software
Curso 2012/2013
Índice
 Introducción
 Patrones de integración
 Bibliografía
1
12/05/2013
Índice
 Introducción
 Patrones de integración
 Bibliografía
Introducción
Ejemplo
 Una empresa quiere hacer que varias de sus herramientas trabajen
juntas ofreciendo una nueva funcionalidad.
 Han decidido usar mensajería para llevar a cabo la integración.
 Problemas:
 ¿Cómo diseñar una solución adecuada?
 ¿Cómo describir la solución de integración?
2
12/05/2013
Introducción
 ¡Una idea!
 Usar un conjunto de soluciones predefinidas
para problemas recurrentes (patrones).
 Usar un vocabulario consistente y una
notación visual para describir soluciones de
integración a gran escala e independientes
de la tecnología usada.
Introducción
 Un patrón es una solución general para un problema que aparece con
frecuencia en un dominio determinado.
 Un patrón no es una solución completa sino un una guía/esqueleto que
debe ser adaptado para cada problema específico.
 Idea intuitiva: “Cuando te encuentres este problema, aplica esta solución”.
Problema
Solución
3
12/05/2013
Introducción
Introducción
4
12/05/2013
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
Message channel
¿Cómo puede una aplicación comunicarse con otra usando mensajería?
Conectar la aplicación usando un canal de mensajes (message
channel), donde una aplicación escribe información en un extremo del
canal y la otra lee la información en el otro extremo.
5
12/05/2013
Message (I)
¿Cómo pueden dos aplicaciones conectadas por un canal de mensajes
intercambiar información?
Empaquetar la información en un mensaje (message), un conjunto de datos
que el sistema de mensajería puede transmitir a través de un canal de
mensajes.
Message (II)
Un mensaje consta de dos partes básicas:
• Cabecera. Información usada por el sistema de mensajería para
describir los datos que se están transmitiendo (origen, destino,
etc.)
• Cuerpo. Contenido del mensaje. Generalmente es ignorado por
el sistema de mensajería y es enviado tal cual.
Este sistema es similar al usado en las redes
de comunicaciones.
6
12/05/2013
Pipes and filters
¿Cómo podemos ejecutar tareas de procesamiento complejas sobre un
mensaje manteniendo la independencia y la flexibilidad?
Usar el estilo arquitectónico tuberías y filtros (pipes and filters) para dividir
tareas de procesamiento largas en una secuencia de pasos pequeños e
independientes (filtros) que son conectados por canales de mensajes
(tuberías).
Message router
¿Cómo podemos desacoplar pasos de procesamiento individuales de
manera que los mensajes puedan pasar por distintos filtros dependiendo
de una serie de condiciones?
Insertar un tipo especial de filtro, enrutador de mensajes (message router),
que consume un mensaje de un canal de mensajes y lo redirige a diferentes
canales en función de una serie de condiciones.
7
12/05/2013
Message translator
¿Cómo pueden sistemas con formatos de datos diferentes comunicarse
entre sí usando mensajería?
Usar un tipo especial de filtro, un traductor de mensajes (message
translator), entre otros filtros o aplicaciones para traducir de un formato a
otro.
Message endpoint
¿Cómo puede una aplicación conectarse un canal de mensajes para enviar
y recibir mensajes?
Conectar la aplicación a un canal de mensajes usando un extremo de
mensajería (message endpoint), un cliente del sistema de mensajería que
la aplicación puede usar para enviar y recibir mensajes.
8
12/05/2013
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
Point-to-point channel
¿Cómo puede la aplicación que envia el mensaje estar segura de que sólo
un receptor recibirá el mensaje?
Enviar el mensaje usando un canal punto a punto (point-to-point channel),
para asegurar que sólo un receptor recibirá el mensaje.
9
12/05/2013
Publish-suscribe channel
¿Cómo puede un emisor enviar un evento a todos los receptores
interesados?
Enviar el evento a través de un canal publicar-suscribir (publish-subscribe
channel), que entrega una copia del evento a cada receptor interesado en
el mismo.
Channel adapter
¿Cómo podemos conectar una aplicación cerrada a un sistema de
mensajería de manera que pueda enviar y recibir mensajes?
Usar un adaptador (channel adapter) que puede acceder a la API o los
datos de la aplicación y publicar mensajes con esos datos en el canal. Así
mismo, el adaptador permitirá recibir mensajes e invocar funcionalidad de
la aplicación.
10
12/05/2013
Message bus
¿Qué arquitectura permite a aplicaciones trabajar juntas pero de una
forma desacoplada de manera que las aplicaciones puedan ser añadidas o
eliminadas sin afectar a las otras?
Estructurar las aplicaciones haciendo uso de un bus de mensajes (Message
Bus) que les permita trabajar juntas usando mensajería.
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
11
12/05/2013
Command message
¿Cómo puede usarse la mensajería para invocar a un procedimiento de
otra aplicación?
Usar un mensaje comando (command message) para invocar a un
procedimiento de otra aplicación.
Document message
¿Cómo puede la mensajería utilizarse para transferir datos entre
aplicaciones?
Usar un mensaje documento (document message) para transferir datos
entre aplicaciones.
12
12/05/2013
Event message
¿Cómo puede usarse la mensajería para transmitir eventos entre
aplicaciones?
Usar un mensaje evento (event message) para la notificación asíncrona de
eventos entre aplicaciones.
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
13
12/05/2013
Message filter
¿Cómo puede una aplicación evitar recibir determinados mensajes?
Usar un filtro de mensajes (message filter), para eliminar mensajes no
deseados de un canal de acuerdo a unos criterios dados.
Splitter
¿Cómo podemos procesar un mensaje que contiene múltiples elementos,
cada uno de los cuales tiene que ser procesado de una forma diferente?
Usar un divisor (splitter) para dividir el mensaje compuesto en un conjunto
de mensajes individuales donde cada mensaje contendrá datos que deben
ser procesados de forma diferente.
14
12/05/2013
Aggregator
¿Cómo podemos combinar mensajes individuales de manera que puedan
ser procesados como un todo?
Usar un filtro con estado, un agregador (aggregator), para recibir y
almacenar mensajes individuales que posteriormente son fusionados en
uno sólo.
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
15
12/05/2013
Content enricher
¿Cómo podemos comunicar una aplicación con otra si el mensaje de
origen no tiene toda la información requerida por la aplicación destino?
Usar un tipo específico de transformador, un enriquecedor de contenido
(content enricher), para acceder a una fuente de datos externos y añadir
información adicional al mensaje.
Content filter
¿Cómo podemos simplificar el trabajo con un mensaje grande cuando sólo
nos interesa parte del contenido?
Usar un filtro de contenido (Content Filter) para eliminar los datos no
deseados del mensaje.
16
12/05/2013
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
Messaging gateway
¿Cómo podemos encapsular el acceso al sistema de mensajería desde el
resto de la aplicación?
Usar un punto de acceso (messaging gateway), un elemento que envuelve
a los métodos del sistema de mensajería y expone métodos específicos del
dominio a la aplicación.
17
12/05/2013
Message dispatcher
¿Cómo pueden múltiples consumidores en un único canal coordinarse
para procesar los mensajes?
Crear un distribuidor de mensajes (message dispatcher) que consuma los
mensajes del canal y los distribuya entre los responsables de procesarlos.
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
18
12/05/2013
Control Bus
¿Cómo podemos administrar eficientemente un sistema de mensajería
distribuido?
Usar un bus de control (control bus) 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.
Índice
 Introducción
 Patrones de integración








Patrones básicos
Canales de mensajes
Construcción de mensajes
Enrutamiento de mensajes
Manipulación de mensajes
Extremos de mensajería
Gestión del sistema
Resumen
 Bibliografía
19
12/05/2013
Resumen
Categoría
Patrones
Patrones básicos
Message channel
Message
Pipes and filters
Message router
Message translator
Message endpoint
Canales de mensajes
Point-to-Point channel
Publish-suscribe channel
Channel adapter
Message bus
Construcción de mensajes
Command message
Document message
Event message
Enrutamiento de mensajes
Message filter
Splitter
Aggregator
Manipulación de mensajes
Content enricher
Content filter
Extremos de mensajería
Messaging gateway
Messaging dispatcher
Gestión del sistema
Control bus
Índice
 Introducción
 Patrones de integración
 Bibliografía
20
12/05/2013
Bibliografía
Gregor Hohpe, Bobby Woolf. Enterprise Integration
Patterns: Designing, Building, and Deploying
Messaging Solutions
http://www.eaipatterns.com/
Disclaimer and Terms of Use
All material displayed on this presentation is for teaching and personal use only.
Many of the images that have been used in the presentation are Royalty Free
images taken from http://www.everystockphoto.com/. Other images have been
sourced directly from the Public domain, from where in most cases it is unclear
whether copyright has been explicitly claimed. Our intention is not to infringe
any artist’s copyright, whether written or visual. We do not claim ownership of
any image that has been freely obtained from the public domain. In the event
that we have freely obtained an image or quotation that has been placed in the
public domain and in doing so have inadvertently used a copyrighted image
without the copyright holder’s express permission we ask that the copyright
holder writes to us directly, upon which we will contact the copyright holder to
request full written permission to use the quote or images.
21
Descargar