sábado, 6 de julio de 2013

SESSION FACADE


Contexto 

Beans Enterprise encapsulan lógica de negocio y datos de negocio y exponen sus interfaces, y por lo tanto la complejidad de los servicios distribuidos, a la capa de cliente.

Problema 
 
En una plataforma de varios niveles Java 2, Enterprise Edition (J2EE), entorno de aplicación, surgen los siguientes problemas:
Acoplamiento apretado, lo que conduce a dirigir la dependencia entre los clientes y los objetos de negocio;
Demasiados invocaciones de método entre el cliente y el servidor, lo que lleva a problemas de rendimiento de la red;

La falta de una estrategia de acceso de cliente uniforme, exponer objetos de negocio a un mal uso.
Una aplicación J2EE varios niveles cuenta con numerosos objetos del lado del servidor que se implementan como beans enterprise. Además, algunos otros objetos arbitrarios pueden proporcionar servicios, datos, o ambos. Estos objetos se conocen colectivamente como objetos de negocio, ya que encapsulan los datos de negocio y la lógica de negocio.
Aplicaciones J2EE implementan objetos de negocio que proporcionan servicios de procesamiento como beans de sesión. Objetos de negocio de grano grueso que representan una vista de objetos de almacenamiento persistente y son compartidos por varios usuarios suelen aplicarse como beans de entidad.

Un problema también surge cuando un cliente interactúa directamente con los objetos de negocio. Dado que los objetos de negocio se exponen directamente a los clientes, no existe una estrategia unificada para acceder a los objetos de negocio. Sin una estrategia de acceso de cliente uniforme tanto, los objetos de negocio están expuestas a los clientes y pueden reducir el uso constante.

Fuerzas
·         Proporcionar una interfaz más sencilla para los clientes al ocultar todas las complejas interacciones entre los componentes de negocio.
·         Reducir el número de objetos de negocio que se expone al cliente a través de la capa de servicios en la red.
·         Ocultar desde el cliente las interacciones subyacentes e interdependencias entre los componentes de negocio. Esto proporciona una mejor manejabilidad, centralización de interacciones (responsabilidad), una mayor flexibilidad y una mayor capacidad para hacer frente a los cambios.
·         Proporcionar una capa de servicio de grano grueso uniforme para separar aplicación objeto de negocio de la abstracción de servicios empresariales.
·         Evitar la exposición de los objetos de negocio subyacentes directamente al cliente para mantener estrecho acoplamiento entre los dos niveles a un mínimo.

Solución
Use un bean de sesión como fachada para encapsular la complejidad de las interacciones entre los objetos de negocio que participan en un flujo de trabajo. El Session Facade maneja los objetos de negocio y proporciona una capa de acceso a servicios de grano grueso uniforme a los clientes.



Estructura
La figura 8.15 muestra el diagrama de clases que representa el patrón Session Facade.
   


Figura 8.15 Sesión diagrama de clases Fachada

Participantes y Colaboraciones
Figura 8.16 contiene el diagrama de secuencia que muestra las interacciones de un Session Facade con dos beans de entidad, un bean de sesión y un DAO, todos actuando como participantes en el cumplimiento de la solicitud del cliente.
   


Figura 8.16 Sesión diagrama de secuencia Fachada

Consecuencias 

Introduce Business-Tier capa Controller
Fachadas de sesión pueden representar una capa de control entre los clientes y el nivel de negocio, como se identifica a través de modelos de análisis. Una Fachada Sesión abarca las interacciones entre el cliente y los componentes de negocio. En una aplicación sofisticada, puede identificar numerosas fachadas de sesión que pueden intermediar entre el cliente y los objetos empresariales de nivel participantes. Para las aplicaciones más simples, se podría pensar que un Session Facade no añade mucho valor, ya que puede actuar para la mayoría de proxy peticiones del cliente a un solo componente de negocio. Sin embargo, como las aplicaciones se vuelven más complejos con el tiempo, con un Session Facade por adelantado rendirá beneficios en una etapa posterior.
 
Expone interfaz uniforme
Las interacciones subyacentes entre los componentes de negocio puede ser muy complejo. Un patrón Session Facade abstrae la complejidad y presenta al cliente una interfaz simple que es fácil de entender y de usar. Mediante la aplicación de un Session Facade, puede diseñar una capa de servicio que expone interfaces más simples al sistema en su conjunto. Así, una fachada proporciona una capa de acceso de grano grueso uniforme a todo tipo de clientes y se puede proteger y ocultar los componentes de negocio participantes subyacentes.

Mejora el rendimiento, reduce métodos expresos
El Session Facade también afecta el rendimiento. El Session Facade reduce la sobrecarga de la red entre el cliente y el servidor, ya que su uso elimina la interacción directa entre el cliente y los datos empresariales y objetos de servicio de negocio. En cambio, todas las interacciones se enrutan a través de la fachada sesión de forma de grano grueso. El Session Facade y sus participantes están más cerca el uno al otro, por lo que es más eficiente para la fachada para gestionar las interacciones entre los objetos participantes. Toda la transferencia de datos y llamadas de métodos de la fachada a los participantes son presumiblemente en una red relativamente de alta velocidad. El rendimiento de la red puede ser afinado aún más para proporcionar el máximo rendimiento al aplicar el patrón Transfer Object para los objetos participantes en su caso.

Proporciona acceso genérico
A Session Facade está destinado a ser una abstracción del flujo de trabajo altamente grano grueso. Por lo tanto, no es deseable tener una interacción de interfaz de sesión por bean de entidad, lo que representaría una abstracción de grano fino en lugar de uno de grano grueso. Analizar la interacción entre el cliente y los servicios de aplicaciones, utilizando casos de uso y escenarios para determinar el grosor de la fachada. Determinar la granularidad óptima del Session Facade para la aplicación mediante la partición de la aplicación en subsistemas lógicos y proporcionando un Session Facade para cada subsistema. Sin embargo, proporcionando un único fachada para todo el sistema puede resultar en una muy grande de interfaz de sesión cuyos métodos numerosos que sea ineficaz. Una sola fachada puede ser suficiente para aplicaciones muy simples que no justifican subsistemas.
Centraliza la gestión de la seguridad
Las políticas de seguridad de la aplicación se pueden gestionar en el nivel de interfaz de sesión, ya que este es el nivel presentado a los clientes. Debido acceso genérico de la Sesión de la fachada, es más fácil y más manejable para definir las políticas de seguridad a este nivel y no en el nivel de componente de negocio participantes. Los componentes empresariales ofrecen puntos de control detallado. Es más fácil administrar la seguridad de Fachadas de sesión que proporcionan acceso genérico, porque hay relativamente pocos métodos de grano grueso para ser administrados con seguridad.
Centraliza el control de transacciones
Debido a que el Session Facade representa el flujo de trabajo para los casos de uso, es más lógico aplicar la gestión de transacciones a nivel Session Facade. Control de transacciones centralizada tiene ventajas similares a las de seguridad centralizada. La fachada ofrece un lugar central para la gestión y la definición de control de transacciones de una forma de grano grueso. Es mucho más trabajo por realizar la gestión individual de los componentes de negocio participantes, sobre todo porque son más detallado de la fachada. Además, no se utiliza un Session Facade, sino que el cliente accede directamente a los beans enterprise, pone la carga de la demarcación de transacción en el cliente y puede producir resultados no deseados. 





(© 2001-2002 Sun Microsystems, Inc. Todos los derechos reservados.)

No hay comentarios:

Publicar un comentario