Beruflich Dokumente
Kultur Dokumente
Informacin 2
Clase 5
Patrones J2EE
Patrones de Desarrollo
Algunas consecuencias
Aumenta la transparencia
Los objetos de negocio no conocen la fuente de datos
Los detalles de implementacin se esconden en el DAO
Facilita la migracin
Debido al desacoplamiento de la fuente de datos
Si utilizamos estrategias como factories o generaciones
automticas, puede hacerse casi sin cambios de cdigo
Reduce la complejidad en los objetos de negocio
Todo el cdigo relativo a la fuente de datos queda en el DAO
Las excepciones y casos particulares debido a estos, no
tienen porque considerarse
Data Access Object
Algunas consecuencias
Centraliza todo el acceso a datos en una nueva capa
El conjunto de DAOs puede verse como una capa de
aislamiento para toda la aplicacin
Esta centralizacin facilita el cambio y migracin
No es til si usamos CMP
No necesitan un DAO, ya que todo el acceso es resuelto por
el contenedor
Son tiles si usamos BMP o Session Beans con acceso a
datos
Introducen una nueva capa
Esta capa produce un impacto en la performance del sistema
Transfer Object
Transfer Object
Cuando el cliente accede a un TO, las llamadas a
sus mtodos son locales, por lo que el costo de red
no existe
Transfer Object
Consecuencias
Simplifica las interfaces remotas y locales para los entity
beans
No necesita proveerse un setter/getter para cada atributo
Puede usarse un TO para actualizar y obtener todos los datos
del componente
Transfiere mas datos, con menos llamadas remotas
Reduce el trafico de red
Puede generar problemas con mltiples copias obsoletas
de lo TO
Puede generar problemas si el nivel de aislamiento de las
transacciones no es Serializado
Session Facade
Session Facade
Session Facade
Session Facade
Session Facade
Session Beans
Los objetos de negocio pueden implementarse
como Session beans
En general proveen servicios, pero pueden
tambin proveer datos
En este ultimo caso, podemos usar DAO
La Session Facade puede agrupar varios de
estos Service Oriented o Data Oriented
session beans
Session Facade
Entity Beans
Los objetos de negocio se representan como
Entity Beans
Cuando mltiples Entity Beans participan en un
caso de uso, no es necesario exponerlos al
cliente
La Session Facade los agrupa a todos, brindando
un mtodo para llevar a cabo la funcionalidad de
negocio planeada
La complejidad de interaccin entre EB queda
escondida al cliente
Session Facade
Consecuencias
Introduce una capa de negocio que acta como
controller
Administra las interacciones entre cliente y objetos de
negocio
Si la aplicacin es pequea, puede parecer que no
aporta valor
A medida que la aplicacin crece, el uso de la fachada
favorecer la arquitectura del sistema
Expone una interfaz uniforme al cliente
La complejidad subyacente se abstrae, y solo se
exponen los mtodos especficos que un cliente usa
Session Facade
Consecuencias
Reduce el acoplamiento, por lo que aumenta la flexibilidad
Los clientes no conocen directamente a los objetos de
negocio
Mientras la fachada no cambie, los clientes no tienen porque
enterarse de cambios estructurales
Aumenta la performance, ya que disminuye los mtodos
pequeos
Provee acceso coarse-grained
Centraliza la administracin de seguridad y transacciones
Expone menos interfaces remotas a los clientes
Service Locator
La arquitectura J2EE es altamente desacoplada
Esto implica mltiples servicios, ejecutando en forma distribuida
Para llevar a cabo una funcionalidad, debemos localizar
servicios e invocarlos
Estas son operaciones particularmente complejas
Service Locator
Consecuencias
Abstrae la complejidad
Provee un acceso uniforme a los servicios por
parte de los clientes
Facilita la incorporacin de nuevos componentes
de negocio
Aumenta la performance de red (evitar la creacin
de home/remote)
Aumenta la performance (cache)
Business Delegate
Business Delegate
Business Delegate
Business Delegate
Consecuencias
Reduce el acoplamiento, aumenta la flexibilidad
Permite traducir excepciones a nivel de negocio
Permite implementar recuperacin de fallas y
sincronizacin de hilos
Simplifica y uniformiza aun mas la interfaz de
negocio
Mejora la performance (si cachea)
Impacta en la performance (+ capas)
Esconde la naturaleza distribuida de un sistema
Front Controller
Front Controller
Front Controller
Front Controller
Arquitecturas J2EE
J2EE clasica
Existen mltiples clases, desparramadas en mltiples
JVMs
Las clases, no se pueden co-localizar
La capa de presentacin se resuelve usando MVC
Los objetos de negocio son SLSBs ejecutando en un EJB
container, exponiendo interfaces remotas
Los accesos a datos se resuelven usando entity beans
CMP con interfaces locales es lo actualmente aceptado
Los datos sern almacenados en un manejador relacional
o en un sistema legado
Arquitecturas J2EE
Ventajas
La interfaz remota provista por los EJB define
claramente la capa de servicios
Los servicios declarativos en los SLSB son
beneficiosos
Soporta varios tipos de clientes
A veces, puede lograr escalabilidad al distribuir
los objetos de negocio
La capa de negocios puede ser actualizada
independientemente de la capa de presentacin
Arquitecturas J2EE
Desventajas
Tiene un overhead altsimo, tanto a nivel de desarrollo,
ejecucin y mantenimiento
Sacrifica la OO frente a la distribucin
Suelen ser difcil de testear
La clase de implementacin no se encuentra disponible
Es propietaria
Arquitecturas J2EE
J2EE local
Existe una sola JVM
Las clases se encuentran co-localizadas en esa JVM
La capa de presentacin se estructura con MVC
Los objetos de negocio se implementan con SLSBs
usando interfaces locales
Debido a la simplificacin, la persistencia se realiza con un
O/R Mapper
El almacenamiento de datos se hace igual que la anterior
DBMS
Sistemas legados
Arquitecturas J2EE
Ventajas
Los problemas de distribucin desaparecen
El acceso a los EJB es mas sencillo
Se elimina la problemtica RMI
Desventajas
No soporta distintos tipos de clientes, sin una
fachada de RMI
Problemas de testing
Continua la complejidad de la arquitectura en si
Arquitecturas J2EE
Ventajas
Ejecutan en un servlet engine
Mayor portabilidad (hardware, software, provider)
Implementacin mas simple
Pocos deployment descriptors
Deployment mas gil
Desventajas
Falta de soporte para remoting
Falta de ambiente para manejo de servicios del sistema
Falta de una clara capa de negocios (fachada)
Transacciones, seguridad (manejadas por el usuario)