Service Oriented Architecture - (SOA) Pautas y Recomendaciones Versión 0.91 - primera iteración
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
Service Oriented Architecture (SOA) Pautas y Recomendaciones Versión 0.91 – primera iteración
ARQ-RFC-01-Pautas y Recomendaciones para SOA 1 Información del Documento 1.1 Identificación y versión ARQ-RFC-01-Pautas y recomendaciones para SOA (Service Oriented Architectures) Versión 0.91 (pre-release, primera iteración) 1.2 Resumen Se presenta un conjunto de PAUTAS (de aplicación obligatoria) y RECOMENDACIONES (de utilización sugerida) relativas a la aplicación de estilos de Arquitecturas Orientadas a Servicios en el BPS. 1.3 Estado RFC – Request For Comments Liberado para ser comentado por parte de los Arquitectos de los Centros de Desarrollo, Proveedores de servicios tercerizados, ASIT y CSEI. 1.4 Historia de Revisiones 26/06/2006 – Creación 07 al 11/07/2006 – Ajustes finales pre-RFC 12/7/2006 – Liberación RFC 1.5 Autores Edición Revisión Coordinación Mónica Borso Virginia Casciato Heber Rodríguez Mauricio Papaleo Carlos Suárez Jorge Suárez Versión 0.9 - 12/7/2006 Página 2 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 2 Tabla de Contenidos 1 INFORMACIÓN DEL DOCUMENTO 2 1.1 IDENTIFICACIÓN Y VERSIÓN 2 1.2 RESUMEN 2 1.3 ESTADO 2 1.4 HISTORIA DE REVISIONES 2 1.5 AUTORES 2 2 TABLA DE CONTENIDOS 3 3 PRESENTACIÓN 5 4 DEFINICIONES Y CONCEPTOS GENERALES 6 4.1 ALGUNAS DEFINICIONES DE ARQUITECTURA 6 4.2 DEFINICIÓN DE COMPONENTE 6 4.3 ALGUNAS DEFINICIONES DE SOA 6 4.4 DOS TAXONOMÍAS DE LA SOA 7 4.5 SERVICIOS 8 4.5.1 Arquitectura de Servicios 9 4.5.2 Estructura y características de los Servicios 10 4.5.3 Los Principios Comunes de la Orientación a Servicios: 11 4.6 OTRAS DEFINICIONES DEL ENTORNO SOA 11 5 DEFINICIONES SOA EN BPS 12 5.1 ALGUNAS DEFINICIONES 12 5.1.1 Principales requerimientos no funcionales 12 5.1.2 Componentes de Servicio 12 5.1.3 Servicios 12 5.1.4 Primera categorización de los Componentes de Servicio 12 6 MECANISMOS DE INTEGRACIÓN MULTIPLATAFORMA 13 6.1 PAUTA DE UTILIZACIÓN DE PROXIES RMI - .NET REMOTING: 13 6.2 PAUTA DE APLICACIÓN COLAS DE MENSAJES 13 6.3 PAUTA DE APLICACIÓN INTERMEDIARIOS DE INTEGRACIÓN (BROKERS) 14 6.4 PAUTA DE APLICACIÓN SOBRE ESTÁNDARES WS-* 14 7 CONSIDERACIONES DE DISEÑO 15 7.1 DISEÑO DE SERVICIOS 15 7.2 BUENAS PRÁCTICAS 15 7.2.1 Adoptar los nombres de los Servicios que maximicen la “consumibilidad” 15 7.2.2 Escoger bien la Granularidad 15 7.2.3 Diseñarlos para que sean cohesivos y completos. 16 7.3 RECOMENDACIONES 16 7.3.1 Manejar múltiples patterns de invocación 16 7.3.2 Modelar los servicios usando transiciones de estado 17 7.4 PAUTAS 17 7.4.1 Ofrecer interfaces sin estado (stateless) 17 7.4.2 Modelar para las “Agregación”/Composición/Orquestación/Coreografía. 17 7.4.3 No concebirlos como aplicaciones enteras. 17 7.5 PRINCIPIOS PARA EL DISEÑO DE LAS OPERACIONES DE LOS SERVICIOS 18 7.5.1 Diseñar para que representen acciones del negocio 18 7.5.2 Definir con parámetros de gran granularidad 18 7.5.3 Diseñar para la concurrencia 18 7.6 PASOS PARA LA DEFINICIÓN DE UN SERVICIO 18 Versión 0.9 - 12/7/2006 Página 3 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 8 ENFOQUES Y TÉCNICAS PARA LA IDENTIFICACIÓN DE SERVICIOS 19 8.1 SEIS ENFOQUES PARA CREAR UNA SOA 19 8.2 RECOMENDACIONES SOBRE ENFOQUES PARA CREAR UNA SOA 19 8.3 TÉCNICAS DE IDENTIFICACIÓN DE SERVICIOS 20 8.3.1 Análisis de documentos 20 8.3.2 Descomposición de dominio 20 8.3.3 Síntesis de sistemas existentes 21 8.3.4 Meet-in-the-middle 21 8.4 RECOMENDACIONES TÉCNICAS DE IDENTIFICACIÓN DE SERVICIOS 21 9 PRÓXIMA ITERACIÓN 22 10 ANEXO: DEFINICIONES Y GLOSARIO 23 10.1 COMPONENTES 23 10.1.1 Definición clásica de COMPONENTE: 23 10.1.2 COM 23 10.1.3 Enterprise Beans 23 10.1.4 CORBA 24 10.2 CARACTERÍSTICAS DE LOS COMPONENTES 24 10.3 DEFINICIONES BÁSICAS AUXILIARES 25 10.3.1 En el entorno Java 26 10.3.2 En el entorno .NET 27 10.4 MECANISMOS DE INTEGRACIÓN MULTIPLATAFORMA 28 10.4.1 Apoderados RMI - .NET Remoting (Proxies) 28 10.4.2 Colas de Mensajes (Message Queues) 28 10.4.3 Intermediarios de Integración (Brokers) 28 10.4.4 Servicios Web (WS) 29 11 REFERENCIAS 30 Versión 0.9 - 12/7/2006 Página 4 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 3 Presentación El presente documento establece pautas y recomendaciones para la creación y evolución de sistemas según un estilo de arquitectura orientado a servicios en el BPS. Está estructurado en un cuerpo principal con algunas definiciones básicas (incluidas con el objetivo de uniformizar terminología) y las pautas y recomendaciones correspondientes, y un anexo con definiciones más amplias. Se incluyen únicamente los aspectos seleccionados para la primera iteración. A ésta seguirá al menos una segunda iteración con los contenidos tentativamente descriptos en el capítulo final. Versión 0.9 - 12/7/2006 Página 5 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 4 Definiciones y conceptos generales 4.1 Algunas Definiciones de ARQUITECTURA ANSI/IEEE Std 1471-2000: “La organización fundamental de un sistema, embebida en sus componentes, las relaciones entre ellos y su entorno y los principios que gobiernan su diseño y evolución” TOGAF: “En TOGAF, “arquitectura” tiene dos significados dependiendo del contexto en que se use: La descripción formal de un sistema, o un plan detallado de un sistema a nivel de sus componentes que guía su implementación. La estructura de sus componentes, sus inter-relaciones, y los principios y guías que gobiernan su diseño y evolución a lo largo del tiempo.” En forma tentativa, este Comité utilizará las definiciones propuestas en el TOGAF. 4.2 Definición de COMPONENTE SZYPERSKY: “Un componente es una unidad de composición de aplicaciones de software, que posee un conjunto de interfaces y un conjunto de requisitos, y que ha de poder ser desarrollado, adquirido, incorporado al sistema y compuesto con otros componentes de forma independiente en tiempo y espacio” [1998] 4.3 Algunas Definiciones de SOA W3C: “Conjunto de componentes que pueden ser invocados, cuyas descripciones de interfaces se pueden publicar y describir”. CBDI: “Estilo resultante de políticas, prácticas y frameworks que permiten que la funcionalidad de una aplicación se pueda proveer y consumir como conjuntos de servicios, con una granularidad relevante para el consumidor…”. IBM: “SOA representa una forma de construir sistemas distribuidos que permite ofrecer las funcionalidades de una aplicación como servicios tanto para aplicaciones de usuario final ó a otros servicios”. Martín Cabrera: “SOA es un estilo de arquitectura que promueve descomponer la lógica funcional de una aplicación en unidades autónomas denominadas servicios” BEA: “Es una estrategia de IT que organiza las funciones discretas contenidas en las aplicaciones empresariales en servicios estandarizados, interoperables, de forma que puedan ser combinados y reusados fácil y rápidamente para adaptarse a los requerimientos del negocio”. OASIS: “SOA es un paradigma para organizar y utilizar capacidades distribuidas que pueden estar bajo el control de diferentes dominios. Provee una manera uniforme de ofrecer, descubrir, interactuar con ellos y sus capacidades de uso para producir el efecto deseado consistente con precondiciones y expectativas medibles”. Gartner: “SOA es una arquitectura de software que comienza con una definición de interface y construye toda la topología de la aplicación como una topología de interfaces, implementaciones y llamados a interfaces. Sería mejor llamada “arquitectura orientada a interfaces”. SOA es una relación de servicios y consumidores de servicios, ambos suficientemente amplios para Versión 0.9 - 12/7/2006 Página 6 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA representar una función de negocios completa”. SUN: “Una arquitectura orientada a servicios es una estrategia donde las aplicaciones hace uso (o se basan) en servicios disponibles en una red. Siendo una manera de compartir funciones (típicamente de negocios) en una manera flexible y extendida.” En forma tentativa, este Comité utilizará las definiciones propuestas por BEA y Gartner. 4.4 Dos taxonomías de la SOA Se incluyen en este párrafo dos diagramas representando los distintos componentes de una Arquitectura Orientada a Servicios. El diagrama anterior muestra una vista tecnológica de los distintos aspectos de SOA, es decir con una fuerte orientación a su implementación. Versión 0.9 - 12/7/2006 Página 7 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA Funciones: 1 Transporte: Mecanismo utilizado para trasladar las peticiones desde el cliente, hasta el proveedor del servicio, y viceversa. 2 Protocolo de comunicación: Es el sistema de comunicación entre el cliente y el proveedor de servicios. 3 Descripción del servicio: Es un esquema utilizado para describir qué servicio es, cómo se le puede invocar, y cuáles son los datos necesarios para realizar su invocación. 4 Servicio: Es la implementación del servicio. 5 Proceso de negocio: Es una colección de servicios, invocados en una determinada secuencia, con un conjunto particular de reglas para satisfaces un requisito de negocio. 6 Registro de servicios: Es un repositorio de servicios y datos, usado por los proveedores de servicio y publicar los servicios, y para los clientes, donde buscarlos. Calidad del servicio: 1 Políticas: Son un conjunto de reglas bajo las cuales, un proveedor de servicio hace que el servicio esté disponible para los clientes. 2 Seguridad: Son un conjunto de reglas que podrían ser aplicadas en la identificación, autorización y control de acceso a los servicios, por parte del cliente. 3 Transacción: Conjunto de atributos que podrían ser aplicados sobre un grupo de servicios para devolver un conjunto de datos consistentes. 4 Gestión: Conjunto de atributos que podrían ser aplicados para gestionar los servicios proporcionados. 4.5 Servicios Mientras los componentes son la mejor forma de implementar servicios, se debe entender que una aplicación correctamente basada en componentes, no necesariamente es una aplicación correctamente orientada a servicios. Versión 0.9 - 12/7/2006 Página 8 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA La clave para comprender esta diferencia radica en ver como una arquitectura orientada a servicios (SOA) implica una capa adicional de arquitectura (una nueva abstracción) implementada con una granularidad más “gruesa” y ubicada más cerca del consumidor de la aplicación. Figura: Capas de Aplicación: Servicios, Componentes y Objetos. Un servicio es una forma de exponer una visión externa de un sistema, con reuso interno y una composición tradicional basada en el diseño de componentes. En una SOA, un servicio mapea una función identificada durante un proceso de análisis del negocio; dependiendo de la función del negocio de que se trate, la granularidad del mismo puede ser mas o menos fina o gruesa. Los servicios no se diseñan en base a las entidades de negocio; cada servicio es una unidad que maneja operaciones a través de un conjunto de entidades de negocio. Un servicio es una unidad de procesamiento de granularidad gruesa, que consume y produce un conjunto de objetos pasados por valor, implementada sobre una colección de componentes que trabajan en colaboración para entregar la funcionalidad del negocio que el mismo representa; los componentes son de una granularidad más fina que la de los servicios. Mientras un servicio mapea una funcionalidad del negocio, un componente típicamente mapea las entidades del negocio y las reglas que las operan. 4.5.1 Arquitectura de Servicios El siguiente diagrama muestra la interrelación entre las arquitecturas de Aplicación, Servicios y Componentes, y la implementación de procesos de negocio mediante orquestación de servicios. Versión 0.9 - 12/7/2006 Página 9 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 4.5.2 Estructura y características de los Servicios Los servicios son una forma de encapsular componentes/programas reusables (building blocks) para proveer funcionalidad a otros usuarios y a otros servicios. Cuando un servicio provee servicios a otro, al servicio que invoca lo llamaremos consumidor, para distinguirlo del usuario. Con los servicios se interactúa mediante el intercambio de mensajes. Un servicio consiste de 3 elementos: 1 Contrato: El uso de la funcionalidad que provee un servicio es gobernada por un contrato. Especifica el propósito, la funcionalidad, las restricciones y el modo de uso del servicio. Es definido POR EL NEGOCIO, en TÉRMINOS del NEGOCIO. 2 Implementación: La funcionalidad en sí misma que provee el servicio: puede ser realizada utilizando cualquier tecnología. 3 Interfaces: Para acceder a la funcionalidad el consumidor necesita interfacear con el servicio. Proveen la forma de acceder a la funcionalidad de acuerdo al contrato. Un servicio puede ofrecer múltiples interfaces para permitir su consumo de diferentes maneras. 1. Características Funcionales: 1 Invocación: sincrónica o asincrónica 2 Intercambio: uni-direccional, bi-direccional 3 Complejidad: referido a la granularidad Versión 0.9 - 12/7/2006 Página 10 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 2. Características No-Funcionales: 1. Requerimientos de Volúmenes 2. Calidad del Servicio 3. Tiempo de ejecución del Servicio 4.5.3 Los Principios Comunes de la Orientación a Servicios: 1. Comparten un contrato formal 2. Bajamente acoplados 3. Abstraen la lógica que existen debajo (autocontenidos y modulares) 4. Interoperables 5. Componibles 6. Reusables 7. Autónomos 8. Sin estado 9. Descubribles (transparentes a la ubicación) 4.6 Otras Definiciones del entorno SOA Servicios: Entidades lógicas - Contratos definidos por una o más interfaces públicas. Service Provider: Entidad de software que implementa una especificación de servicio. Consumidor: Entidad de software que llama a un service provider. Tradicionalmente se lo llama “cliente”. Puede ser una aplicación final u otro servicio. Service Locator: Tipo específico de service provider que actúa como registry y permite buscar interfaces de service providers y sus ubicaciones. Service Broker: Tipo específico de service provider que puede pasar requerimientos de servicios a otros service providers. Versión 0.9 - 12/7/2006 Página 11 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 5 Definiciones SOA en BPS En este capítulo se incluirán las definiciones correspondientes a la visión BPS de la Arquitectura Orientada a Servicios. Las mismas están en elaboración, identificándose al momento de liberación de este RFC dos fuentes principales: 1. las pautas de ASIT 2. la especificación de la Service Component Architecture, trabajo realizado en forma conjunta por varias empresas [12] El Comité está trabajando en la generación de una pauta conceptualmente “abierta”, implementable en cualquier tecnología, construida sobre elementos claramente definidos y una nomenclatura no ambigua. En futuras versiones de este documento se irán presentando avances y refinamientos sucesivos. 5.1 Algunas definiciones Las definiciones que siguen fueron incluidas en la presentación realizada para el lanzamiento del Comité. 5.1.1 Principales requerimientos no funcionales Encapsulamiento Conectividad Flexibilidad Reuso Independencia de plataforma 5.1.2 Componentes de Servicio Implementan la lógica y la encapsulan Granularidad a establecer Implementados internamente en una única tecnología (homogéneos) 5.1.3 Servicios Constituyen la única interfaz de acceso a la lógica implementada en los componentes de servicio Son invocables como servicio externo, no como un módulo en una biblioteca 5.1.4 Primera categorización de los Componentes de Servicio Según la función que cumplen (principalmente), pueden identificarse en primera instancia las siguientes categorías. 1. Administración de datos 2. Lógica de negocios básica 3. Lógica de negocios compuesta 4. Interacción con el usuario 5. Componentes utilitarios comunes Versión 0.9 - 12/7/2006 Página 12 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 6 Mecanismos de integración multiplataforma En este capítulo se describen algunos mecanismos de integración multiplataforma que permiten la invocación de métodos o servicios distribuidos y que pueden servir para la implementación de una “capa de servicios” que oculte la tecnología de implementación subyacente. Los siguientes mecanismos aportan a la construcción: 1. Apoderados (Proxies) RMI - .NET Remoting 2. Colas de Mensajes (Message Queues) 3. Intermediarios de Integración (Brokers) 4. Servicios Web (WS) En el Anexo se describen las principales características de cada mecanismo 6.1 Pauta de utilización de Proxies RMI - .NET Remoting: Se establece como PAUTA que esta estrategia de integración no deberá aplicarse en la construcción de servicios de consumo externo (orientado al Usuario externo vía Web) y deberá evitarse en la integración de aplicaciones dentro de la Institución (Pattern Enterprise Application Integration o EAI) en atención a que: tanto la JVM como el CLR tienen formatos propios de serialización de invocaciones. es necesario piezas de terceros para filtrar este tipo de invocaciones salientes, mapeándolas adecuadamente a mensajes RMI serializados (Por ej.: JNBridge y J- Integra.). lo mismo, para las invocaciones desde JVM en formato RMI, que las transforman en pedidos .NET Remoting. tiende a crear acoplamiento entre aplicaciones al permitir compartir objetos, sea por las interfases remotas invocadas como por los argumentos enviados las implementaciones de estas soluciones pueden no contemplar el manejo de la seguridad o la coordinación de transacciones distribuidas. En general, para servicios consumidores internos puede aplicarse escenarios del tipo RMI-RMI .NET Remoting -.NET Remoting y restrictivamente RMI-.NET Remoting si se tienen restricciones de performance, costo, oportunidad, que impongan sacar ventaja de su alto rendimiento, en razones de que: el protocolo de transporte es el TCP, menos cargado que HTTP. la serialización es binaria (empaquetada), con menor consumo de recursos. 6.2 Pauta de aplicación Colas de Mensajes En aplicaciones complejas, este mecanismo basado en eventos (Event-Driver Architecture - EDA) rápidamente puede quedar fuera de control al generar múltiples dependencias. Versión 0.9 - 12/7/2006 Página 13 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA Se PAUTA EDA como enfoque complementario a soluciones basadas en extraer aspectos de procedimiento de varios servicios dentro de uno dedicado, donde se centralizará la definición del proceso y el control de las acciones del servicio de negocio paso a paso, moviendo el sistema de un estado a otro. En este enfoque cada paso deberá llamar una operación de negocio provista por otro servicio o por un componente. 6.3 Pauta de aplicación Intermediarios de Integración (Brokers) Se PAUTA Intermediarios de Integración (Brokers) como pieza clave en la integración de aplicaciones y la construcción de una arquitectura de servicios, soporte de funciones en procesos de negocio. El BPS ha definido Biztalk Server como Integration Broker estándar. 6.4 Pauta de aplicación sobre estándares WS-* Se establece como PAUTA la utilización de Servicios Web como pieza clave en la integración de aplicaciones y la construcción de una arquitectura de servicios, soporte de funciones en procesos de negocio. El BPS ha definido como estándares los registrados por los documentos llamados “Basic Profile” y “Security Basic Profile”de WS-I Basic Profile 1.2 y 2.0, fecha de revision Mayo /2006 o posterior Security Basic Profile 1.0, fecha de revision Mayo /2006 o posterior Es necesario tener en cuenta las directrices y evolución de las tres organizaciones involucradas en la definición, desarrollo y publicación de estándares WS-*: World Wide Web Consortium (W3C) OASIS Web Services Interoperability (WS-I) a la hora de diseñar SOA mediante Servicios Web. Versión 0.9 - 12/7/2006 Página 14 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 7 Consideraciones de Diseño 7.1 Diseño de Servicios Siempre se deben pensar los Servicios desde el punto de vista de los Consumidores. Adoptar esa postura facilita muchas de las decisiones de diseño de los mismos, desde varios puntos de vista. Este criterio deberá tenerse muy presente a la hora de diseñar un Servicio. Recordando que un servicio es una agrupación lógica de operaciones cuyas interfaces son publicadas en algún formato pre-establecido, veremos algunas recomendaciones que aplican al servicio como un todo. 7.2 Buenas prácticas 7.2.1 Adoptar los nombres de los Servicios que maximicen la “consumibilidad” Esto permite que el desarrollador pueda identificar los servicios y las operaciones de manera sencilla. Los nombres deben de ser significativos del dominio del negocio que se está desarrollando, favoreciendo en la nomenclatura la utilización de aspectos del negocio frente a los aspectos técnicos. Los servicios deben de ser nombrados utilizando nombres ó sustantivos, y las operaciones utilizando verbos. Ejemplo 1: Nombrando Servicios utilizando frases verbales y lenguaje técnico Servicio: ManejarDatosClientes Operaciones: InsertarRegistroCliente, ModificarRegistroCliente, ..... ..... Ejemplo 2: Nombrando los servicios usando nombres y frases verbales que son conceptos del Negocio Servicio: ServicioClientes Operaciones: CrearNuevoCliente, CambiarDireccionCliente, CorregirDireccionCliente, .... .... Puede ser necesario contar con un glosario de términos de negocios, en ese caso el glosario debe tener un administrador responsable. 7.2.2 Escoger bien la Granularidad No existe una forma sencilla de determinar la granularidad de un servicio, entendida como la cantidad de operaciones que el servicio debe ofrecer. Algunas orientaciones que influyen a la hora de determinar la granularidad: Usualmente los Servicios son la unidad de testeo y de release. Si existen muchas operaciones, muchos consumidores van a utilizar el servicio; si se requiere cambiar una Versión 0.9 - 12/7/2006 Página 15 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA operación que es utilizada por un conjunto de consumidores, el servicio entero deberá ser re-deployed, lo que impactará a todos sus consumidores. No ir a los extremos: pocos servicios con muchas operaciones vs muchos servicios con pocas operaciones. Mantener un equilibrio entre mantenibilidad, operabilidad y consumibilidad. 7.2.3 Diseñarlos para que sean cohesivos y completos. Las operaciones que brindan deben de ser funcionalmente cohesivas, o sea que las operaciones deben estar agrupadas por su función. No deben agruparse en base a detalles de implementación o al patrón de secuencia lógica de uso (algunas veces puede parecer que algunas operaciones deberían ir juntas, pero analizadas desde el punto de vista funcional, tal vez se encuentren en diferentes servicios). El buen uso de la nomenclatura nombre-verbo (servicio y operaciones) puede ayudar, uno puede hacerse la pregunta: “¿Este verbo es alguna acción que el nombre realiza?” Por completitud, se entiende que debe ofrecer todas las operaciones necesarias para realizar el servicio (siempre desde el punto de vista funcional), entendiendo bien que es lo que necesitan los consumidores conocidos e infiriendo operaciones que también puedan ser necesarias para otros consumidores aún no conocidos. Ejemplo 3: Ejemplo de Completitud Servicio: ServicioCelulares Operaciones: CrearCelular, CambiarCelular, ConsultarCelular, EliminarCelular, DesactivarCelular Suena razonable que -a pesar de no haber sido pedido explícitamente por los consumidores identificados- se va a necesitar también la operación ActivarCelular, por lo que el servicio debería ofrecerla desde un principio. 7.3 Recomendaciones 7.3.1 Manejar múltiples patterns de invocación Un consumidor debería usar código similar para invocar servicios usando una variedad de patterns de invocaciones diferentes, como por ejemplo: Tradicional (SOAP/HTPP) Asíncrona (SOAP/Message Queues) Como RECOMENDACION se preferirán las invocaciones remotas y asíncronas por sobre las invocaciones locales y sincrónicas. Esto incide directamente en el diseño. No es lo mismo pensar en invocaciones locales y sincrónicas que en invocaciones remotas (hay que tener en cuenta la red) y asíncronas (se deben pensar mecanismos compensatorios, por ejemplo). Ejemplo 4: Ejemplo de un mal diseño para las invocaciones remotas Servicio: ServicioCelulares Operaciones: .... Versión 0.9 - 12/7/2006 Página 16 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA ObtenerPropietarioCelular, ObtenerFacturaciónCelular, ObtenerFechaDesactivacionCelular Estas operaciones (continuando con el ejemplo de los celulares) parecen ser razonables en un ambiente local. Pensando en invocaciones remotas, esto es altamente ineficiente; imaginemos un listado por celular, para cada celular se deberán realizar 3 invocaciones por la red para obtener los datos de un solo celular. En este caso pensándolo desde el punto de vista del consumidor (remoto) se debería manejar la granularidad de las operaciones de forma tal que en una sola operación se pudiera obtener los datos completos. 7.3.2 Modelar los servicios usando transiciones de estado Estas transiciones de estado deben reflejar el ciclo de vida de los objetos del negocio. Es necesario acompañar la documentación de los servicios y las intefaces con un buen diagrama de estados indicando en que transición y con que finalidad se usa cada interface. Probablemente pueda resultar conveniente agrupar los servicios de acuerdo al estado en que se encuentran los objetos de negocio, resultando de ello una mayor consumibilidad (pensando siempre en la forma en que el consumidor los va a necesitar). 7.4 Pautas 7.4.1 Ofrecer interfaces sin estado (stateless) Los servicios son diseñados para el reuso, deben ser escalables y estar preparados para ser deployados en infraestructuras de alta-disponibilidad, por lo tanto se establece la PAUTA de que sean stateless. Esto se debe hacer pensando en que no deben ser diseñados para soportar una relación de largo tiempo entre el consumidor y el proveedor, ni tampoco una operación deberá depender del estado de una invocación previa. En este caso siempre existe un compromiso entre la escalabilidad y las necesidades de negocio. Técnicamente se pueden proveer interfaces con estado, para ello existen técnicas tales como las cookies ó EJB‟s Stateful (en el mundo J2EE); pero estas técnicas limitan la escalabilidad y la libertad de la infraestructura para poder elegir diferentes formas de crecimiento (usando cookies por ejemplo, es necesario establecer afinidad entre los clientes y los servidores web). Estos recursos deberán ser utilizados solamente con autorización expresa (como excepciones) y deberá estar correctamente fundamentado su uso. 7.4.2 Modelar para las “Agregación”/Composición/Orquestación/Coreografía. Esto debe ser tenido en cuenta desde el diseño, ya que sino pueden aparecer problemas para componerlos si no fueron considerados en su momento. Es muy común no pensar en estas cosas en el momento del diseño, pero deben de ser tomadas en cuenta, maxime que no sabemos con precisión quien puede llegar a invocar los servicios que están siendo creados, ni de que forma participarán en un proceso de negocio y que operaciones se harán antes y después de haberlos invocado. 7.4.3 No concebirlos como aplicaciones enteras. Los servicios deben tener un alcance limitado; si se necesita mayor complejidad, se deben hacer más servicios, evitando la sobrecarga de un servicio con mucha funcionalidad. Versión 0.9 - 12/7/2006 Página 17 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 7.5 Principios para el Diseño de las Operaciones de los Servicios 7.5.1 Diseñar para que representen acciones del negocio Para ello se usarán nombres de verbos y serán bien específicas del negocio en vez de ser operaciones genéricas y/o puramente técnicas. Deben corresponderse con escenarios específicos del negocio. Las interfaces individuales deben ser simples y sencillas de entender, incrementado la consumibilidad. 7.5.2 Definir con parámetros de gran granularidad Se recomienda que sean de gran granularidad por tres motivos: Permiten crear operaciones más flexibles, permitiendo nuevas versiones sin afectar a los consumidores. Una operación con gran cantidad de parámetros es vulnerable a errores de “transposición” de parámetros en las invocaciones. Aumentan la eficacia de la red. Estas pautas deberán ser sopesadas en el ámbito de creación de las operaciones del servicio, pero se deberá ganar en generalidad de la operación y sus parámetros frente a implementaciones para consumidores específicos; para ello se debe tener muy en cuenta el negocio y los posibles consumidores. 7.5.3 Diseñar para la concurrencia Se deberá tener en cuenta que la invocación de las operaciones puede ser realizada múltiples veces por el mismo consumidor e inclusive por varios consumidores. Se debe adoptar la mejor postura con respecto a la concurrencia de las operaciones, dependiendo del objeto de negocio que se esté modelando, intentando siempre impedir las posibles contenciones y/o problemas de inconsistencia que pudieran aparecer debido a la múltiple invocación de la operación. Se debe tender a favorecer el asincronismo y la ejecución remota por sobre la sincronía y la ejecución local. De todas formas en la documentación del servicio deberá quedar expresamente establecido de que forma se comporta la operación y cuales son las pautas de su invocación, incluyendo ejemplos. 7.6 Pasos para la Definición de un Servicio Pretende ser una guía tentativa sobre los pasos a seguir para definir un servicio. 1. Definir el propósito del servicio (orientado al negocio) 2. Determinar la información que debe de manejar el servicio (metadata y schemas) 3. Identificar los potenciales consumidores. 4. Definir los aspectos de niveles de servicio, seguridad y performance que brindará el servicio. 5. Determinar las funciones (métodos) encapsuladas dentro del servicio, es decir el comportamiento interno. 6. Definir las interfaces, los parámetros y el mapeo con las funciones o métodos internos. 7. Definir como deberá ser testeado el servicio (test information, service invocation, validez de los resultados, etc) 8. Definir la documentación a incorporar. Versión 0.9 - 12/7/2006 Página 18 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 8 Enfoques y Técnicas para la Identificación de Servicios Se describen en este capítulo algunos enfoques con los que pueden encararse proyectos de definición de Arquitecturas Orientadas a Servicios. Luego, algunas técnicas de identificación de servicios. 8.1 Seis Enfoques para crear una SOA Enfoque Caracterización del Proyecto Clasificación Orientado a Procesos de Los procesos de negocio necesitan TOP-DOWN Negocio explotar los recursos disponibles, y cada actividad requiere invocar una funcionalidad de IT. Para ello, cada funcionalidad debe estar disponible en una manera flexible. MDA (Model-Driven Se modela el negocio y luego las TOP-DOWN Architecture, basada en herramientas generan el detalle herramientas) Empaquetado de Sistemas Se ha realizado una inversión BOTTOM-UP Legados importante en los sistemas existentes, pero éstos no son flexibles: no se les puede agregar funcionalidades en forma rápida, son sistemas estancos, con funciones “cautivas”. Composición de Sistemas Descomponer los sistemas legados BOTTOM-UP Legados monolíticos en módulos (manual o automático) Orientado a Datos Proveer acceso a los datos usando DATA-FOCUSED servicios, sin exponer esquemas o consideraciones de implementación Message-Driven Se necesita integrar sistemas, SERVICE-ORIENTED comunicándolos mediante protocolos INTEGRATION of estándar no propietarios. APPLICATIONS AND SYSTEMS. 8.2 Recomendaciones sobre Enfoques para crear una SOA Abordar un enfoque del tipo Orientado a Procesos de Negocio lleva, sin duda a la construcción y descripción de una SOA, pero sería poco realista ignorar la extensión y criticidad de la plataforma tecnológica que hoy da soporte a dichos procesos. Según el escenario a atender, se recomienda aplicar los siguientes enfoques: 1. Partiendo de los sistemas actuales: Message-Driven Empaquetado de Sistemas Legados Composición de Sistemas Legados MDA (Model-Driven Architecture, basada en herramientas) 2. Partiendo del análisis de procesos de negocio: Versión 0.9 - 12/7/2006 Página 19 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA MDA (Model-Driven Architecture, basada en herramientas) Orientado a Procesos de Negocio 8.3 Técnicas de identificación de servicios La identificación de servicios puede ser hecha mediante las siguientes técnicas: 1. Análisis de Documentos 2. Descomposición de Dominio (top-down) 3. Síntesis de Sistemas Existentes (bottom-up) 4. Convergencia (meet-in-the middle) 8.3.1 Análisis de documentos Esta técnica involucra la revisión de los modelos de negocio y la documentación de los sistemas existentes para el proceso de negocio en cuestión. Las siguientes preguntas suelen surgir en esta fase: ¿Los factores que motivan el proyecto SOA y sus objetivos, han sido expresados y son medibles en términos de los indicadores clave del desempeño del negocio? ¿Los procesos de negocio que van a ser materializados, han sido definidos y descriptos a un nivel de detalle suficiente para la toma de decisiones de arquitectura de IT? ¿Existen puntos críticos pendientes de resolución en la documentación de requerimientos no funcionales? Si los modelos de negocio y los documentos de sistemas existentes no son suficientes, deben planificarse actividades de análisis adicionales, ya que no tiene sentido avanzar con el modelado sin una base documental sólida. 8.3.2 Descomposición de dominio Esta técnica parte de los procesos de negocio a alto nivel, y progresivamente mejora el nivel de detalle hasta llegar a la identificación de los servicios necesarios para la implementación de los procesos en cuestión. Los pasos a seguir son: 1. Identificación de los procesos de negocio a implementar 2. Modelado de los mismos para capturar requerimientos 3. Aplicación de técnicas de análisis orientado a objetos para identificar y definir los servicios requeridos Debe mantenerse una perspectiva de alto nivel en este proceso, ya que el análisis orientado a objetos de un proceso completo puede resultar en un modelo de objetos demasiado grande e inmanejable. Pueden aplicarse técnicas tradicionales de modelado de procesos y de análisis de requerimientos y también utilizarse documentos existentes (por ej.: de casos de uso) relacionados al proceso en cuestión. Durante el proceso debe construirse un glosario de uso común entre analistas de negocio y de IT y deben identificarse relaciones entre sus términos. Versión 0.9 - 12/7/2006 Página 20 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 8.3.3 Síntesis de sistemas existentes En el escenario más usual, la identificación de servicios se inicia motivada por necesidades de integración de sistemas. Esta integración puede ser realizada mediante la descomposición de los sistemas existentes (y relevantes) en: Flujos de procesos de negocio Reglas de negocio Componentes potencialmente reutilizables Mediante esta descomposición es posible sintetizar un conjunto de servicios candidatos a partir de los componentes identificados, y sintetizar otros a partir de la adaptación de los flujos de proceso descubiertos. 8.3.4 Meet-in-the-middle Esta técnica combina las descriptas en párrafos anteriores. En paralelo se procesan los análisis top-down (orientado a procesos de negocio) y bottom-up (descomponiendo sistemas existentes), buscando la convergencia o “encuentro en el medio” de ambos análisis, mediante el mapeo de requerimientos de negocio y funcionalidades de los sistemas. 8.4 Recomendaciones Técnicas de identificación de servicios Considerando el alto grado de informatización de procesos existente en BPS, y la necesidad de aprovechar la inversión ya realizada mediante la mayor reutilización posible de los sistemas existentes, parece poco viable aplicar técnicas como las descriptas en primer y segundo término (análisis de documentos y descomposición de dominio), a menos que se trate de procesos aún no informatizados. En consecuencia, y en función de los plazos disponibles y del avance existente en la documentación de los procesos de negocio involucrados, se recomienda aplicar las siguientes técnicas de identificación de servicios: 1. Partiendo de los sistemas actuales: Síntesis de Sistemas Existentes Convergencia (meet-in-the middle) 2. Partiendo del análisis de procesos de negocio: Análisis de documentos Descomposición de dominio Versión 0.9 - 12/7/2006 Página 21 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 9 Próxima iteración Se espera incluir en la próxima iteración los siguientes aspectos de SOA: Patterns Protocolos Catálogo de servicios Manejo de consistencia Seguridad Administración Productos Adicionalmente se incluirán las modificaciones que surjan de los comentarios recibidos al presente RFC. Versión 0.9 - 12/7/2006 Página 22 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA 10 ANEXO: Definiciones y Glosario 10.1 Componentes La noción de componente extiende la Programación Orientada a Objetos (OOP) en el contexto de sistemas abiertos y eventualmente distribuidos. Def.: Se entiende por “abierto” aquel sistema concurrente, reactivo, independientemente extensible, heterogéneo, evolutivo y permisivo al ingreso o abandono en forma dinámica de componentes software heterogéneos. Def.: Se entiende por plataforma de componentes al entorno de desarrollo y de ejecución que permita aislar la mayor parte de las dificultades conceptuales y técnicas que conlleva la construcción de aplicaciones basadas en los componentes del modelo [Krieger y Adler, 1998]. Es una implementación de los mecanismos del modelo de componentes concreto, junto con una serie de herramientas asociadas. Ejemplos: Componentes Modelo ActiveX/OLE, COM Enterprise Beans EJB/J2EE Orbix CORBA 10.1.1 Definición clásica de COMPONENTE: Def.: “Un componente es una unidad de composición de aplicaciones software, que posee un conjunto de interfaces y un conjunto de requisitos , y que ha de poder ser desarrollado , adquirido, incorporado al sistema y compuesto con otros componentes de forma independiente, en tiempo y espacio” [Szypersky, 1998] Tres “modelos” de Componentes: 10.1.2 COM Es una imagen binaria que sigue la especificación del modelo de objeto común (COM), definida por Microsoft, según el cual se separa el conjunto de interfaces públicas del componente (básicamente, una tabla de punteros a métodos) de su implementación. 10.1.3 Enterprise Beans Nota: La especificación J2EE no considera como componentes J2EE a los Java Beans ya que son diferentes de los Beans Enterprise. La arquitectura de componentes JavaBeans se pueden utilizar tanto en la capa de cliente como de servidor para manejar la comunicación entre una aplicación cliente o un applet y los componentes que se ejecutan en el servidor J2EE o entre los componentes del servidor y una base de datos, mientras que los componentes Enterprise JavaBeans sólo se utilizan en la capa de negocio como parte de una capa de servidor. Los JavaBeans tienen variables de ejemplar y métodos accesores y mutadores para acceder a las propiedades del bean o digamos, acceso a los datos en las variables de ejemplar lo que simplifica el diseño y la implementación de los componentes JavaBeans. Versión 0.9 - 12/7/2006 Página 23 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA Java 2 Enterprise Edition (J2EE) es una arquitectura multicapa para implementar aplicaciones de tipo empresarial y aplicaciones basadas en la Web. Esta tecnología soporta una gran variedad de tipos de aplicaciones, desde aplicaciones Web de gran escala a pequeñas aplicaciones cliente-servidor. El objetivo principal de la tecnología J2EE es crear un simple modelo de desarrollo para aplicaciones empresariales utilizando componentes basados en el modelo de aplicación. En este modelo dichos componentes utilizan servicios proporcionados por el contenedor, que de otro modo tendrían que estar incorporados en el código de la aplicación. Def.: “Un componente J2EE es una unidad de software funcional auto-contenido que se ensambla dentro de una aplicación J2EE con sus clases de ayuda y ficheros y que se comunica con otros componentes de la aplicación. “ La especificación J2EE define los siguientes componentes J2EE: Las Aplicaciones Clientes y los Applets son componentes que se ejecutan en el lado del cliente. Los componentes Java Servlet la tecnología JavaServer Pages son componentes Web que se ejecutan en el lado del servidor. Los Enterprise JavaBeans (EJB) son componentes de negocio que se ejecutan en el servidor de aplicación. o Entity Beans: Modelan conceptos de negocio como objetos persistentes asociados a los datos. o Session Beans: Representan procesos ejecutados en respuesta a la solicitud de un cliente. o Message-Driven Beans: Representan procesos ejecutados en respuesta a la recepción de un mensaje. Además de estos componentes principales, J2EE incluye servicios estándar y tecnologías de soporte como: Java Database Connectivity (JDBC) tecnología que proporciona acceso a sistemas de bases de datos relacionales. Java Transaction API (JTA) o Java Transaction Service (JTS) proporciona soporte para transacciones a los componentes J2EE. Java Messaging Service (JMS) para comunicación asíncrona entre componentes J2EE. Java Naming y Directory Interface (JNDI) proporcionan accesos a nombres y directorios. 10.1.4 CORBA CORBA es modelo de componente que extiende los anteriores COM/EJB (CORBA Component Model –CCM 3.0 -Estándar OMG/2002). Es una arquitectura orientada al desarrollo e interoperabilidad de objetos distribuidos heterogéneos centrada en un ORB. No aplica en la actual plataforma IT del Banco; y pese a ser una plataforma de integración estándar aceptada por el Banco, aplicará sólo como último recurso tecnológico de integración. 10.2 Características de los Componentes Introspección Evento y comunicaciones asíncronas Enlazado dinámico y composición tardía Binario (“caja negra”) Interfaces y contratos Versión 0.9 - 12/7/2006 Página 24 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA Servicios ofrecidos y requeridos Desarrollo independiente de contexto Reutilización por composición 10.3 Definiciones básicas auxiliares Conjunto no exhaustivo de conceptos básicos que intervienen en el cuerpo conceptual tratado: Composición tardía Dícese de aquella composición que se realiza en un tiempo posterior al de la compilación del componente, como puede ser durante su enlazado, carga o ejecución, y por alguien ajeno a su desarrollo, es decir, que sólo conoce al componente por su interfaz o contrato, pero no tiene porqué conocer ni sus detalles de implementación, ni la forma en la que fue concebido para ser usado. Entornos Un entorno es el conjunto de recursos y componentes que rodean a un objeto o componente dado, y que definen las acciones que sobre él se solicitan, así como su comportamiento. Se pueden definir al menos dos clases de entornos para los componentes: el entorno de ejecución y el de diseño. En primero de ellos es el ambiente para el que se ha construido el componente, y en donde se ejecuta normalmente. El entorno de diseño es un ambiente restringido, que se utiliza para localizar, configurar, especializar y probar los componentes que van a formar parte de una aplicación, y en donde los componentes han de poder mostrar un comportamiento distinto a su comportamiento normal durante su ejecución. Eventos Mecanismo de comunicación por el que se pueden propagar las situaciones que ocurren en un sistema de forma asíncrona. La comunicación entre emisores y receptores de los eventos se puede realizar tanto de forma directa como indirecta, siguiendo el mecanismo publish-and-subscribe que describiremos más adelante. Los eventos suelen ser emitidos por los componentes para avisar a los componentes de su entorno de cambios en su estado o de circunstancias especiales, como pueden ser las excepciones. Reutilización Habilidad de un componente software de ser utilizado en contextos distintos a aquellos para los que fue diseñado (reutilizar no significa usar más de una vez). Existen 4 modalidades de reutilización, dependiendo de la cantidad de información y posibilidades de cambio que permita el componente a ser reutilizado: caja blanca, caja de cristal, caja gris caja negra. Contratos Especificación que se añade a la interfaz de un componente y que establece las condiciones de uso e implementación que ligan a los clientes y proveedores del componente. Los contratos cubren aspectos tanto funcionales (semántica de las operaciones de la interfaz) como no funcionales (calidad de servicio, prestaciones, fiabilidad o seguridad). Polimorfismo Habilidad de un mismo componente de mostrarse de diferentes formas, dependiendo del contexto; o bien la capacidad de distintos componentes de mostrar un mismo comportamiento en un contexto dado. Ambas acepciones representan los dos lados de una misma moneda. En POO el polimorfismo se relaciona con la sobre-escritura de métodos y la sobrecarga de operadores (polimorfismo ad-hoc). Sin embargo, en POC muestra tres nuevas Versión 0.9 - 12/7/2006 Página 25 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA posibilidades: La reemplazabilidad, o capacidad de un componente de reemplazar a otro en una aplicación, sin romper los contratos con sus clientes (también conocido por polimorfismo de subtipos o de inclusión). El polimorfismo paramétrico, o implementación genérica de un componente. Similar en concepto a los generics de Ada o a los templates de C++, el polimorfismo paramétrico no se resuelve como ellos en tiempo de compilación (generando la típica explosión de código) sino en tiempo de ejecución. Por ultimo, el polimorfismo acotado combina los polimorfismos de inclusión y paramétrico para poder realizar restricciones sobre los tipos sobre los que se puede parametrizar un componente [Szyperski, 1998]. Seguridad Por seguridad en este contexto se entiende la garantía que debe ofrecer un componente de respetar sus interfaces y contratos, y forma el concepto básico sobre el que se puede garantizar la seguridad (en su acepción más amplia) de un sistema. Se puede hacer una distinción entre seguridad a nivel de tipos y a nivel de módulos. A nivel de tipos, refiere a que la invocación de los servicios de un componente se realice usando parámetros de entrada de los tipos adecuados (o supertipos suyos: contravarianza) y que los servicios devuelvan también valores del tipo adecuado (o subtipos suyos: covarianza). A nivel de módulos, [Szyperski y Gough, 1995] refiere a que sólo se utilicen los servicios ajenos al componente que hayan sido declarados por él, y no otros. Reflexión La reflexión es la habilidad de una entidad software de conocer o modificar su estado. A la primera forma se le denomina reflexión estructural, y a la segunda reflexión de comportamiento. 10.3.1 En el entorno Java J2EE tiene la misión de proveer una plataforma portable, segura y estandarizada para aplicaciones distribuidas realizadas en Java. Es importante notar que J2EE es sólo una especificación. Esto permite que diversos productos sean diseñados alrededor de estas especificaciones, entre ellos Tomcat y JBoss. Entre los conceptos más importantes se encuentran las definiciones siguientes: RMI: Remote Method Invocation. Es la forma nativa que tiene Java de comunicación entre objetos distribuidos. Fue extendida a RMI-IIOP para lograr la comunicación con objetos CORBA. JNDI: Java Naming Directory Interface. Es usada para acceder a los sistemas de nombres y directorios, por ejemplo, un componente EJB. JDBC: Java Database Connectivity. Es una API que permite el acceso a bases de datos relacionales. JMS: Java Messaging Services. Permite la comunicación entre componentes mediante un servicio de mensajería. Versión 0.9 - 12/7/2006 Página 26 de 30
ARQ-RFC-01-Pautas y Recomendaciones para SOA Java Servlets. Son componentes orientados al request / response. Toman los pedidos de un cliente (web browser) y generan luego la respuesta a ese cliente. JSP: Java Server Pages Son componentes Web, encargados de la capa de presentación. Es la tecnología para generar páginas web de forma dinámica en el servidor, desarrollado por Sun Microsystems. EJBs: Enterprise Java Beans. Define como deben ser escritos los componentes en el lado del servidor. Establece un contrato entre estos componentes y los servidores de aplicaciones que los manejan. Existen tres tipos de componentes en la especificación 2.0 de los EJBs : Session Beans, Entity Beans y Message-driven Beans. i. Los Session Beans modelan el proceso del negocio. Esto es, „acciones’, tales como sumar dos números, invocar un sistema legado, autorizar una tarjeta de crédito, etc. Un Session Bean puede realizar operaciones sobre una base de datos, pero no es un objeto persistente. Un componente de este tipo tiene „conversaciones‟ con el cliente. Implican la interacción entre el Bean y el cliente, están compuestas por un número de llamadas a métodos, y corresponden a un proceso de negocio. Los Session Beans se clasifican según el tipo de conversación con un cliente, como: Stateful Session Beans. Es diseñado para servir procesos de negocio que abarcan múltiples llamadas a métodos y que necesitan mantener un estado de la conversación. Stateless Session Beans. Mantiene interacciones con el cliente que abarcan una única llamada a método. Esto quiere decir que luego de una invocación a un método de un Session Bean de este tipo, el contenedor puede decidir destruirlo. ii. Los Entity Beans modelan los datos de la empresa. Son objetos Java que sirven como „cache‟ de la información. Puede describirse a una instancia de un Entity Bean como una representación en memoria de datos capturados desde una fuente de almacenamiento, que puede ser nuevamente persistida actualizando estos datos. Esta representación en memoria debe ser interpretada como una vista de la base de datos. Esto es, si algún campo del Entity Bean es actualizado los cambios deben verse reflejados automáticamente en la base de datos. Existen dos tipos de Entity Beans según la forma en la que los datos son persistidos en alguna fuente de almacenamiento perdurable: Bean-Managed Persístanse (BMP). La lógica de acceso a los datos debe ser codificada por el programador. Container-Managed Persistence (CMP). El EJB Container maneja en forma transparente la lógica involucrada en la persistencia de los datos, almacenándolos y recuperándolos mediante el mapeado a la fuente de datos. iii. Los Message-driven Bean, un componente sin estado, que actúa como un simple „listener‟ de mensajes. Es parecido a un Session Bean, en cuanto a que también representa „acciones‟ del negocio. La diferencia radica en que es invocado sólo por el EJB container cuando un mensaje es recibido desde un Topic o una Queue JMS. 10.3.2 En el entorno .NET Pendiente de elaboración. Versión 0.9 - 12/7/2006 Página 27 de 30
También puede leer