Post on 28-Jan-2016
ESB
Víctor Cabrera Cañizares
Enterprise Service Bus
ESB
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
-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.
Funciones clave
ESBPropiedades
1. Distribuido: Para eliminar restricciones geográficas.
2. Basado en mensajes: Para proporcionar loose coupling.
3. 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
------ Plugins e Interceptores -------
Celtix
• 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
------ Plugins e Interceptores -------
Celtix
• 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
------ Componentes cliente -------
Celtix
------ Componentes cliente -------
Celtix
• 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
------ Componentes servidor -------
Celtix
------ Componentes servidor -------
Celtix
• Servant
- Objeto que implementa un servicio WSDL
- La relación entre un objeto servant y un servicio WSDL es flexible
------ Ejemplo (RequestHandling ) -------Celtix
------ Ejemplo (RequestHandling ) -------Celtix
Celtix
•Mantiene aún en desarrollo la integración entre Celtix y JBI
-Solución 1: Desarrollo de componentes JBI dentro de un contenedor Celtix
------ Trabajos futuros -------
Celtix
-Solución 2: Desarrollo de componentes Celtix dentro de un entorno JBI
------ Trabajos futuros -------
Celtix------ Trabajos futuros -------
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
• Integración 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
------ Arquitectura -------
Mule
• Mule Manager
Su objetivo es gestionar los objetos:- Conectores- Endpoints- Transformadores
Proporciona servicios al Mule Model y los componentes que éste maneja
------ Arquitectura -------
Mule
• Mule Model
- Contenedor de los componentes
- Controla el flujo de mensajes desde/hacia los componentes
- Maneja hilos
- Basado en SEDA (staged event-driven architecture)
------ Arquitectura -------
Mule
• 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.
------ Arquitectura -------
Mule
• 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
------ Arquitectura -------
Mule
• Componente UMO
Mule
• Componente UMO
Ciclo de vida
------ Arquitectura -------
------ Interceptores -------
Mule
Service Mix
Bibliografía
Celtix -> https://wiki.objectweb.org/celtixServiceMix -> http://www.servicemix.orgMule -> http://mule.codehaus.org/
ServiceMix -> http://www.servicemix.org/DownloadMule -> http://mule.codehaus.org/DownloadCeltix -> http://forge.objectweb.org/project/showfiles.php?group_id=192
Para descargar: