Contexto
Un sistema de varios niveles, distribuida requiere
invocaciones de métodos remotos para enviar y recibir datos a través de los
niveles. Los clientes están expuestos a la complejidad de tratar con
componentes distribuidos.
Problema
Componentes de la capa de presentación interactúan
directamente con los servicios de negocio. Esta
interacción directa expone los detalles de la implementación de la interfaz de
programa de aplicación de servicio de negocio (API) para la capa de
presentación. Como resultado, los componentes
de la capa de presentación son vulnerables a los cambios en la aplicación de
los servicios a las empresas: Cuando la ejecución del cambio de servicios
empresariales, el código de aplicación expuestos en el nivel de presentación
debe cambiar también.Además, puede haber un impacto negativo en el rendimiento de la red ya que los componentes de niveles de presentación que utilizan las API de servicios empresariales hacen demasiadas invocaciones a través de la red. Esto ocurre cuando los componentes de la capa de presentación utilizan la API subyacente directamente, sin un mecanismo de almacenamiento en caché del lado del cliente o servicio de agregación.
Por último, la exposición de las API de servicio directamente al cliente obliga al cliente para hacer frente a los problemas de red asociados a la naturaleza distribuida de la tecnología Enterprise JavaBeans (EJB).
Fortalezas:
·
Clientes de la capa de presentación necesitan
tener acceso a servicios de oficina.
·
Diferentes clientes, tales como dispositivos,
clientes web y clientes pesados, necesitan tener acceso a servicios
empresariales.
·
Servicios de oficina API puede cambiar a medida
que evolucionan las necesidades empresariales.
·
Es deseable minimizar el acoplamiento entre los
clientes de la capa de presentación y el servicio de negocio, así ocultar los
detalles de implementación del servicio, como la búsqueda y el acceso.
·
Los clientes pueden necesitar para poner en
práctica mecanismos de almacenamiento en caché de la información de servicio de
negocio.
·
Es deseable reducir el tráfico de red entre el
cliente y servicios de oficina.
Solución
Utilice un Business Delegate para reducir el acoplamiento entre los clientes de niveles de presentación y servicios de oficina. El Business Delegate oculta los detalles de la implementación del servicio de negocio, como la búsqueda y la información de acceso de la arquitectura EJB.
Estructura
La Figura 8.1 muestra el diagrama de clases que representa el patrón Business Delegate. El cliente solicita al BusinessDelegate para proporcionar acceso a los servicios de negocio subyacente. El BusinessDelegate utiliza un LookupService para localizar el componente BusinessService requerida.
Figura 8.1 Diagrama de clase BusinessDelegate
Participantes y Responsabilidades
Figura 8.2 y la Figura 8.3 muestran los diagramas de secuencia que ilustran las interacciones típicas para el patrón Business Delegate.
Figura 8.2 Diagrama de secuencia BusinessDelegate
BusinessDelegate
El papel del BusinessDelegate es proporcionar control y protección para el servicio de negocio. El BusinessDelegate puede exponer dos tipos de constructores a los clientes. Un tipo de solicitud de una instancia del BusinessDelegate sin un ID, mientras que el otro crea una instancia con un ID, donde ID es una versión de cadena de la referencia a un objeto remoto, como EJBHome o EJBObject.
Cuando se inicializa sin una identificación, los BusinessDelegate pide al servicio del servicio de búsqueda, normalmente implementado como un Servicio de localización (consulte "Servicio de localización" en la página 368), que devuelve el servicio de fábrica, tales como EJBHome. Los BusinessDelegate pide que el Service Factory ubicar, crear o eliminar un BusinessService, como un bean enterprise.
Cuando se inicializa con una cadena de ID, la BusinessDelegate utiliza la cadena de ID de volver a conectar a la BusinessService. Por lo tanto, los escudos BusinessDelegate el cliente de los detalles de implementación subyacentes de la nomenclatura BusinessService y búsqueda. Además, el cliente de la capa de presentación nunca hace directamente una invocación remota en un BusinessSession, sino que el cliente utiliza el BusinessDelegate.
LookupService
El BusinessDelegate utiliza el LookupService para localizar el BusinessService. El LookupService encapsula los detalles de implementación de búsqueda BusinessService.
BusinessService
El BusinessService es un componente comercial de nivel, como un bean enterprise o un componente JMS, que proporciona el servicio requerido para el cliente.
Estrategias
Delegar Estrategia Proxy
El Business Delegate expone una interfaz que proporciona a los clientes acceso a los métodos básicos de la API de servicios empresariales. En esta estrategia, un Business Delegate proporciona la función de proxy para pasar los métodos cliente al bean de sesión se encapsula. El Business Delegate podría almacenar en caché, además, todos los datos necesarios, incluyendo las referencias remotas a la casa del bean de sesión o de objetos remotos para mejorar el rendimiento al reducir el número de búsquedas. El Delegado de negocios también puede convertir esas referencias a las versiones de cadena (ID) y viceversa, utilizando los servicios de un Servicio de localización.
En el ejemplo de la aplicación de esta estrategia se explica en la sección "Código de ejemplo" de este patrón.
(© 2001-2002 Sun Microsystems, Inc. Todos los derechos reservados.)
No hay comentarios:
Publicar un comentario