Patrones de Integración

Los patrones de integración (o EAI) definen diseños comunes (patrones) en el desarrollo de funcionalidades relacionadas con la integración de aplicaciones. Especifican una manera estándar de realizar ciertas tareas y ayudan a conocer con un lenguaje común determinadas cosas que desarrollamos habitualmente.

Los sistemas de EAI principalmente implementan dos patrones:

  • Mediación: Donde los sistemas de EAI actúan como el canal que vincula varias aplicaciones o sistemas utilizando técnicas de encaminamiento. Cuando en una aplicación (interlocutor origen) ocurre un evento que puede ser interesante a alguna otra aplicación (interlocutor destino) esta debe notifica a un módulo de integración (servicio) del sistema EAI. Entonces el sistema de EAI propaga esos cambios a las otras aplicaciones relevantes.
  • Federación: En este caso, el sistema EAI actúa como un consolidador de información entre varias aplicaciones. Todos los accesos al o del exterior de la organización a cualquiera de las aplicaciones son gestionados por el sistema EAI, y éste está configurado para exponer sólo la información relevante conectándose a las aplicaciones del mundo exterior, y efectuar todas las interacciones con las aplicaciones internas sin intervención del agente externo.

Ambos patrones son usados en conjunto frecuentemente. El mismo sistema EAI puede tener varias aplicaciones en mediación, mientras sirve requerimientos de agentes externos contra esas aplicaciones (federación).

 

Patrones de diseño para servicios de mensajería

  • Message Channel
    • Conectar dos aplicaciones mediante un sistema de mensajería
    • Ejemplo:

 

  • Pipe & Filters
    • Realizar procesos de una determinada complejidad en mensajes manteniendo independencia y flexibilidad
    • Modularización y ejecución de tareas de procesamiento de mensajes en etapas Implementación (BTS)
    • Ejemplo:

  • Content-Based Router
    • Examina el contenido de un mensaje para distribuirlo por diferentes canales en función de los datos que componen dicho mensaje

    • Ejemplo:

  • Message Filter
    • Evitar recepción de mensajes no deseados

    • Crear un conjunto de criterios (filtros) de manera que si el mensaje contiene propiedades que hacen coinciden con los filtros especificados,  este será enviado por un canal de salida, en caso contrario será descartado.

    • Ejemplo:

  • Recipient List
    • Encaminar un mensaje a una lista de suscriptores del mismo.

    • Ejemplo:

 

  •  

    Splitter

    • Descompone un mensaje que contiene una lista de elementos repetitivos, para que estos puedan ser procesados de forma individual.
    • Ejemplo:

  • Aggregator
    • Combina varios mensajes individuales pero que se relacionan entre ellos en un único mensaje para que puedan ser procesados de una forma global

    • Ejemplo:

 

  • Scatter-Gather
    • Conectar dos aplicaciones mediante un sistema de mensajería

    • Ejemplo:

 

 

Patrones de diseño para la manipulación de mensajes

 

  • Message Translator
    • Transformación de un mensaje en otro para que pueda ser usado en un contexto diferente (Adapter GoF)

    • Ejemplo:

 

  • Envelop Wrapper
    • Incrustar un mensaje (funcional) como cuerpo de un mensaje (protocolo)

    • Pretende no mezclar procesos funcionales con procesos tecnológicos

    • Ejemplo:

  • Content-Enricher
    • Añade datos necesarios en la construcción de un mensaje cuando estos no están presentes en el mensaje original 

    • Ejemplo:

  • Content-Filter
    • Simplifica la estructura de un mensaje previo a su entrega cuando esta no es relevante para la aplicación destino.
    • Ejemplo:

  • Normalizer
    • Resuelve la problemática de procesamiento de mensajes que contienen la misma semántica, pero distinto formato
    • Ejemplo:

 

Patrones de diseño para servicios de orquestación

  • Convoys
    • Este patrón se usa para asegurarse que una misma instancia de una orquestación procesa mensajes consecutivos conectados a una misma operación
  • Error Handling
    • Añadir piezas de código por cada forma (o scope) dentro de un flujo de trabajo para gestionar errores inesperados y facilitar la recuperación de los mismos

- Control de errores

- Manejadores de excepciones

- Lógica de compensación

- Suspensión / Terminación del proceso

 

Referencias

Para obtener más información se recomienda la lectura de las siguientes referencias:

 

1. Libro “Enterprise Integration Patterns” de la colección “Signature Series” de “The Addison-Wesley” (https://www.amazon.com/o/asin/0321200683/ref=nosim/enterpriseint-20)

2. Libro “Integration Patterns” publicado por “Microsoft Patterns & Practices” (https://www.amazon.com/o/asin/073561850X/ref=nosim/enterpriseint-20)

3. Libro electrónico (gratuito) “Guidelines for Application Integration” publicado en MSDN por “Microsoft Patterns & Practices” (https://msdn2.microsoft.com/en-us/library/ms978650.aspx)

4. Libro electrónico (gratuito) “Enterprise Integration Patterns with BizTalk Server 2004” que aunque los patrones están implementados con BizTalk Server 2004 pueden ser aplicados perfectamente en BizTalk Server 2006 (https://www.enterpriseintegrationpatterns.com/docs/integrationpatterns_biztalk.pdf)

5. Guía de Microsoft ESB (Enterprise Service Bus),  (https://www.codeplex.com/esb)

6. Sitio Web dedicado a EAI (https://www.enterpriseintegrationpatterns.com)

7. Asistente para implementar patrones de Integración e BizTalk Server (https://www.codeplex.com/PatternWizard)