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
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.
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.
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.
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.
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 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.
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