Contexto
Los clientes
de aplicaciones tienen que intercambiar datos con beans enterprise.
Problema
Java 2
Platform, Enterprise Edition (J2EE) implementan componentes de negocio del lado
del servidor como beans de sesión y beans de entidad. Algunos métodos expuestos
por los componentes de negocio devuelven datos al cliente. A menudo, el cliente
invoca métodos get de un objeto de negocio varias veces hasta obtener todos los
valores de los atributos.
Los
beans de sesión representan los servicios a las empresas y no se comparten
entre los usuarios. Un bean de sesión proporciona métodos de servicios de
granularidad gruesa cuando se implementa por el patrón Session Facade.
Los
beans de entidad, por otro lado, son multiusuario, objetos transaccionales que
representan datos persistentes. Un bean de entidad expone los valores de los
atributos, proporcionando un método de acceso (también referido como un captador
o conseguir método) para cada atributo que desea exponer.
Cada
llamada al método realizado al objeto de servicio de negocio, ya sea un bean de
entidad o un bean de sesión, es potencialmente remoto. Por lo tanto, en una
aplicación de Enterprise JavaBeans (EJB) tales invocaciones remotas utilizan la
capa de red, independientemente de la proximidad del cliente para el grano, la
creación de una sobrecarga de la red. Enterprise bean llamadas a métodos pueden
impregnan las capas de la red del sistema, incluso si el cliente y el
contenedor EJB que sostiene el bean de entidad son a la vez corriendo en la
misma JVM, OS, o una máquina física. Algunos vendedores pueden implementar
mecanismos para reducir esta sobrecarga, utilizando un enfoque de acceso más
directo y sin pasar por la red.
A medida
que el uso de estos métodos aumenta remotas, rendimiento de la aplicación puede
degradar significativamente. Por lo tanto, el uso de múltiples llamadas para
conseguir métodos que devuelven valores únicos atributos es ineficiente para la
obtención de valores de datos de un bean enterprise.
Fortalezas:
- Todo el acceso a un bean enterprise se realiza a través de interfaces remotos al bean. Cada llamada a un bean enterprise es potencialmente una llamada a un método remoto con sobrecarga de la red.
- Normalmente, las aplicaciones tienen una mayor frecuencia de las operaciones de lectura que las transacciones de actualización. El cliente requiere los datos de la capa de negocio para la presentación, exhibición, y otros de sólo lectura tipos de procesamiento. El cliente actualiza los datos en la capa de negocio con mucha menos frecuencia de lo que lee los datos.
- El cliente por lo general requiere valores para más de un atributo o un objeto dependiente de un bean enterprise. Por lo tanto, el cliente puede invocar múltiples llamadas remotas para obtener los datos requeridos.
- El número de llamadas realizadas por el cliente al bean enterprise afecta al rendimiento de la red. Aplicaciones de los chattier con un aumento del tráfico entre el cliente y el servidor niveles, a menudo reducen el rendimiento de la red.
Solución
Utilizar un Transfer Object para encapsular los
datos de empresa. Una sola llamada al método se utiliza para
enviar y recuperar el Transfer Object. Cuando el cliente solicita el bean enterprise para los datos
empresariales, el bean de empresa puede construir el Transfer Object, rellenarlo
con sus valores de atributos, y pasarlo por valor al cliente.
Estructura
La
Figura 8.5 muestra el diagrama de clases que representa el patrón Transfer
Object en su forma más simple.
Figura 8.5 Transferencia diagrama de clases de
objetos
Como se
muestra en este diagrama de clases, el Transfer Object se construye sobre la
demanda por el grano de la empresa y devuelto al cliente remoto. Sin embargo,
el patrón Transfer Object puede adoptar varias estrategias, dependiendo de los
requisitos. La sección "Estrategias", explica estos enfoques.
Participantes
y Responsabilidades
Figura
8.6 contiene el diagrama de secuencia que muestra las interacciones del patrón
Transfer Object.
Figura
8.6 Transferencia diagrama de secuencia de objetos
Cliente
Esto representa
el cliente del bean enterprise. El cliente puede ser una aplicación de usuario
final, como en el caso de una aplicación de cliente enriquecido que ha sido
diseñado para acceder directamente a los granos de la empresa. El cliente puede
ser delegados de negocios (ver "Business Delegate" en la página 248)
o un BusinessObject diferente.
BusinessObject
El
BusinessObject representa un papel importante en este modelo que puede ser
cumplido por un bean de sesión, un bean de entidad, o un objeto de acceso a
datos (DAO). El BusinessObject es responsable de crear el Transfer Object y
devolverlo al cliente bajo petición. El BusinessObject también puede recibir
datos desde el cliente en la forma de un objeto de transferencia y el uso de
esos datos para realizar una actualización.
TransferObject
El
TransferObject es un objeto Java serializable se refiere como un Transfer
Object. Una clase Transfer Object podría proporcionar un constructor que acepta
todos los atributos necesarios para crear el Transfer Object. El constructor
puede aceptar todos los valores de los atributos del bean de entidad que el
objeto Transfer está diseñado para celebrar. Por lo general, los miembros del
Transfer Object se definen como públicos, eliminando así la necesidad de
obtener y establecer métodos. Si algún tipo de protección es necesario, a
continuación, los miembros podrían definirse como protegida o privada, y se
proporcionan métodos para obtener los valores. Al ofrecer ningún método para
establecer los valores, un objeto de transferencia está protegido contra
modificaciones después de su creación. Si se permite que sólo unos pocos
miembros que modificarse para facilitar las actualizaciones, a continuación, se
pueden proporcionar métodos para ajustar los valores. Por lo tanto, la creación
de objetos de transferencia varía dependiendo de los requerimientos de una
aplicación. Se trata de una opción de diseño en cuanto a si los atributos de la
transferencia de objetos son privados y acceder a través de captadores y
definidores, o todos los atributos se hacen públicos.
(©
2001-2002 Sun Microsystems, Inc. Todos los derechos reservados.)
No hay comentarios:
Publicar un comentario