ESB Víctor Cabrera Cañizares
ESB Enterprise Service Bus Un ESB nos ofrece todas las herramientas y la infraestructura necesarias para construir un SOA (Service Oriented Architectures) Es la plataforma que brinda los servicios de enrutamiento y transformación de mensajería para la arquitectura SOA Problemas de interoperabilidad entre implementaciones de distintos fabricantes
ESB También conocido como message broker. Es un estándar abierto basado en mensajería síncrona o asíncrona como elemento middleware, que proporciona interoperabilidad segura entre aplicaciones de empresa por medio de XML, interfaces de Servicios Web y reglas de enrutamiento estandarizado de documentos. Método unificado de interactividad con formato de datos de fuentes dispares. El diseño multilenguaje y multiplataforma de un ESB permite a las empresas procesar datos entre aplicaciones de varias fuentes. J2EE y .NET.
ESB Funciones clave Transformación: La capacidad de transformar documentos de un formato de datos a otro de modo que el grupo receptor pueda hacer uso de la interfaz con los datos en un formato de aplicación diferente del que se envió. Enrutamiento: La habilidad para enrutar mensajes. Portabilidad: La capacidad de compartir los datos entre diferentes sistemas y entornos de operación. Balanceo de carga / agrupamiento (Load balancing/clustering): La capacidad de distribuir procesamiento entre varios dispositivos para que ninguno se sobrecargue. Failover: La capacidad para transferir funciones de mensajería hacia otro servidor si falla uno de ellos durante el intercambio de datos.
ESB Propiedades Distribuido: Para eliminar restricciones geográficas. Basado en mensajes: Para proporcionar loose coupling. Estándar abierto: Para preservar inversión y fomentar la participación.
Implementaciones Open Source Celtix Mule Service Mix
Celtix
Celtix ------ Componentes principales -------
Celtix Configuration Service Ofrece a los componentes Celtix recuperar datos de configuración sin saber cómo y dónde están almacenados Plugin Manager Permite que los plugins se auto-registren al ser cargados Realiza la carga de plugins dinámicamente Binding Manager Un binding, en el contexto, referencia a la cadena de componentes a través de las cuales un mensaje pasa desde el cliente hasta el servidor El Binding Manager es el responsable de montar los componentes en un binding y linkarlos en una cadena
Celtix Dispatcher/Workqueue Permite el envío eficiente de peticiones y mensajes de respuesta Proporciona un Workqueue y un pool de hilos para el envío concurrente de mensajes WSDL Model Celtix parsea un contrato WSDL y crea un modelo WSDL con el árbol resultante Este modelo es importante para proporcionar un acceso eficiente en tiempo de ejecución a los datos WSDL Permite cambiar atributos en tiempo de ejecución
Celtix ------ Plugins e Interceptores ------- Transport plugins Permite integrar Celtix con cualquier clase de transporte El framework para implementar un transporte Celtix debe ser flexible y hacer el mínimo de suposiciones sobre el tipo y transporte subyacente Request-Level Interceptors Permite acceder o modificar el contenido de una petición o un mensaje de respuesta Proporciona acceso a mensajes en un formato de relativo alto nivel Útiles para la lectura y escritura de cabeceras de mensajes
Celtix ------ Plugins e Interceptores ------- Message-Level Interceptors Proporciona acceso a mensajes en un formato de bajo nivel Útiles para ciertas tareas como codificación o compresión de mensajes
Celtix ------ Componentes cliente -------
Celtix ------ Componentes cliente ------- Cliente Proxy Expone las mismas operaciones que aquellas definidas en un WSDL type port El cliente proxy actúa como un sustituto (stand-in) del objeto remoto que en realidad hace el trabajo (el servicio remoto WSDL) Plugin cliente genérico Celtix aún no lo ha definido
Celtix ------ Componentes servidor -------
Celtix ------ Componentes servidor ------- Servant Objeto que implementa un servicio WSDL La relación entre un objeto servant y un servicio WSDL es flexible
Celtix ------ Ejemplo (RequestHandling ) -------
Celtix ------ Ejemplo (RequestHandling ) -------
Celtix ------ Trabajos futuros ------- Mantiene aún en desarrollo la integración entre Celtix y JBI Solución 1: Desarrollo de componentes JBI dentro de un contenedor Celtix
Celtix ------ Trabajos futuros ------- Solución 2: Desarrollo de componentes Celtix dentro de un entorno JBI
Celtix ------ Trabajos futuros ------- Integración JBI JBI (Java Business Integration), Service Engines (SE) y Binding Components (BC). Los SEs proporcionan lógica de negocio y servicio de transformaciones. Los BCs proporcionan conectividad para aplicaciones que son externas al JBI
Mule
Mule El canal puede tener cualquier método de comunicación de datos entre dos puntos. El recibidor de mensajes se usa para leer o recibir datos desde una aplicación. El conector entiende cómo enviar y recibir datos sobre un canal particular. El transformador se usa para transformar formatos de mensajes. El inbound router se puede usar para controlar cómo y qué eventos son recibidos por un componente UMO. El componente UMO es el que procesa la orden. El outbound router se usa para publicar mensajes/eventos.
Mule
Mule ------ Arquitectura ------- Mule Manager Su objetivo es gestionar los objetos: Conectores Endpoints Transformadores Proporciona servicios al Mule Model y los componentes que éste maneja
Mule ------ Arquitectura ------- Mule Model Contenedor de los componentes Controla el flujo de mensajes desde/hacia los componentes Maneja hilos Basado en SEDA (staged event-driven architecture)
Mule ------ Arquitectura ------- Mule Model Es responsable del mantenimiento de las instancias UMO y su configuración. Hospeda uno o más componentes UMO. Encapsula y controla el comportamiento de una instancia de servidor Mule en tiempo de ejecución. El EntryPointResolver se usa para determinar qué método invocar en un componente UMO cuando se recibe un evento.
Mule ------ Arquitectura ------- Son componentes autónomos simples Componente UMO UMO: Universal Message Object Son componentes autónomos simples Envía/Recibe eventos hacia/desde cualquier otro UMO Ejecuta lógica de negocio sobre un evento de llegada
Mule ------ Arquitectura ------- Componente UMO
Mule ------ Arquitectura ------- Componente UMO Ciclo de vida
Mule ------ Interceptores -------
Service Mix
Bibliografía Celtix -> https://wiki.objectweb.org/celtix ServiceMix -> http://www.servicemix.org Mule -> http://mule.codehaus.org/ Para descargar: ServiceMix -> http://www.servicemix.org/Download Mule -> http://mule.codehaus.org/Download Celtix -> http://forge.objectweb.org/project/showfiles.php?group_id=192