1. Requisitos y Patrones de diseño en J2EE
Presentaremos una lista de requisitos que surgen a la hora de crear una aplicación J2EE. Junto al requisito, se indica el o los patrones que se suelen aplicar. Esto puede ser util a la hora de identificar cual puede ser (los) patrones a aplicar.
Requisitos |
Patrones |
---|---|
Intercepting Filter |
|
Añadir la capacidad de logging, depuracion, u otro comportamiento que debe completar cada request |
Front Controller Intercepting Filter |
Centralizar el control para el manejo de la request |
Front Controller Intercepting Filter Application Controller |
Crear un interfaz generico de tipo Command o un objeto que contenga el contexto, de manera que se reduzca el acoplamiento entre los elementos que manejan el control c y los elementos que actuan como helpers |
Front Controller Application Controller Context Object |
Si hemos de implementar nuestro Controller como un servlet o bien como JSP |
Front Controller |
Crear una vista a partir de varias sub-vistas |
Composite View |
Si hemos de implementar nuestra View como un servlet bien como JSP |
View Helper |
Como descomponer nuestra View y Model |
View Helper |
Donde encapsular los datos provenientes de la presentacion y su logica |
View Helper |
Si debemos de implementar nuestros Helpers como JavaBeans o como Custom tags |
View Helper |
Combinar multiples patrones de presentación |
Intercepting Filter Dispatcher View |
Donde encapsular el manejo de la Vista y la lógica de Navegacion, lo que implica seleccionar una de las Vistas y servirla |
Pattern Service to Worker Dispatcher View |
Donde guardar el estado de la Session |
Session State on the Client Session State in the Presentation Tier Storing State on the Business Tier |
Control de acceso del cliente a ciertas vistas |
Design "Controlling Client Access" Hide Resources From a Client |
Controlar el flujo de requests hacia la aplicacion |
Design "Duplicate Form Submissions" Design "Introduce Synchronizer Token" |
Controlar la llegada de submits duplicados |
Design "Duplicate Form Submissions" Introduce Synchronizer Token |
Problemas de diseño al usar el mecanismo de populacion de valores estandar de JSP <jsp:setProperty> |
"Helper Properties—Integrity and Consistency" |
Reducción del acoplamiento entre la capa de presentación y la de negocio |
"Hide Presentation Tier-Specific Details From the Business Tier" "Introduce Business Delegate" |
Particionar el codigo de acceso a datos |
"Separate Data Access Code |
Requisitos |
Patrones |
---|---|
Reducir el acoplamiento entre la capa de presentación y la capa de negocio |
Business Delegate |
Poner en cache los servicios de la capa de negocio a los clientes |
Business Delegate |
Ocultar los detalles de implementacion de lookup/creacion/acceso de los servicios de la capa de negocio |
Business Delegate Service Locator |
Encapsular las dependencias propietarias de lookup en los servicios |
Service Locator |
Proveer un metodo uniforme para lookup y creacion en los servicios de la capa de negocio |
Service Locator |
Ocultar la complejidad de las dependencias de los enterprise bean y el lookup de los componentes JMS |
Service Locator |
Transferir los datos entre los objetos de negocio y los clientes pasando por las distintas capas |
Transfer Object |
Proveer de un interfaz simple para los clientes remotos |
Business Delegate Session Façade Application Service |
Reducir las invocaciones a metodos remotos mediante el acceso a metodos que agrupen varias funcionalidades dentro de la capa de negocio |
Session Façade |
Manejar las relaciones entre los componentes enterprise bean y ocultar la complejidad de las interacciones |
Session Façade |
Proteger los componentes de la capa de negocio de ser expuestos directamente al cliente |
Session Façade Application Service |
Proveer una capa uniforme de acceso a los componentes de la capa de negocio |
Session Façade Application Service |
Implementar un modelo conceptual de dominio complejo mediante objetos |
Business Object |
Identificar objetos que manejan dependencias y sus objetos dependientes en el diseño de objetos de negocio y entity beans |
Business Object Composite Entity |
Diseñar entity beans que manejan varias otras dependencias |
Composite Entity |
Reducir o eliminar la dependencia entre entity beans y el esquema de base de datos |
Composite Entity |
Reducir o eliminar la dependencia entre entity beans locales y entity beans remote |
Composite Entity |
Reducir el numero de entity beans y mejorar su manejo |
Composite Entity |
Obtener el modelo de datos de la aplicacion a partir de componer varios componentes de la capa de negocio |
Transfer Object Assembler |
Construcción dinamica del modelo de datos de aplicacion |
Transfer Object Assembler |
Ocultar la complejidad de la construcción del modelo de datos a los clientes |
Transfer Object Assembler |
Proveer de un procesamiento de peticiones y resultados en la capa de negocio |
Value List Handler |
Reducir la sobrecarga del uso de metodos lookup de enterprise bean |
Value List Handler |
Proveer de peticion-resultados cacheados para el cliente, dentro del servidor, con posibilidad de hacer-deshacer |
Value List Handler |
Elegir entre el uso de sessions beans con estado o sin el |
Session Bean—Stateless Versus Stateful |
Evitar el acceso directo por parte del cliente a entity beans |
Wrap Entities With Session |
Encapsular los servicios de la capa de negocio y ocultar los detalles de implementación |
Introduce Business Delegate |
Añadir logica de negocio dentro de un entity bean |
Business Logic in Entity Beans Move Business Logic to Session |
Crear session beans como gruesos servicios de la capa de negocio |
Merge Session Beans Wrap Entities With Session |
Reducir o eliminar sobrecargas de red o servidor debido a la comunicacion entity-bean-to-entity-bean |
Reduce Inter-Entity Bean Communication |
Particionar el codigo de acceso a datos |
Separate Data Access Code |
Requisitos |
Patrones |
---|---|
Reducir el acoplamiento entre la capa de negocio y la de recursos |
Data Access Object |
Centralizar el acceso a la capa de recursos |
Data Access Object |
Minimizar la complejidad de los componentes de la capa de recursos y los de la capa de negocio |
Data Access Object |
Proveer procesamiento asincrono en aplicaciones empresariales |
Service Activator |
Enviar una peticion asincrona hacia los servicios de la capa de negocio |
Service Activator |
Procesamiento asincrono de una peticion, subdividiendola en sub tareas concurrentes |
Service Activator |
Persistir de manera transparente un objeto del modelo |
Domain Store |
Implementar un framework de persistencia propio |
Domain Store |
Exponer un servicio web mediante XML y un protocolo standard de Internet |
Web Service Broker |
Ofrecer de forma centralizada y distribuir servicios existentes bajo la forma de web services |
Web Service Broker |