lunes, 5 de junio de 2017

Requisitos y patrones J2EE aplicables

Requisites and applied J2EE Patterns

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.

1.1. Capa de presentacion

Requisitos

Patrones

Preprocesamiento o postprocesamiento de la request

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

1.2. Capa de negocio

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

1.3. Capa de integracion

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

2. Enlaces de interes