Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

37
Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración

Transcript of Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Page 1: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Tutor: Ing. Juan E. Talavera Horn

2010

GWT – EJBPatrones de diseño e integración

Page 2: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC aplicado a Google Web Toolkit

El Observer pattern en GWT

El modelo entity access object en EJB

El modelo session facade en EJB

Integración GWT - EJB

Contenido

Page 3: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Modelos aplicados con GWT

Page 4: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – Model View Controller

Modelo: Lógica de negocio y datos

Vista: Interfaz de usuario. Presentación gráfica del modelo.

Controlador: Coordinación entre modelo y vista. Invocado con cada interacción del usuario.

Page 5: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – Model View Controller

Page 6: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – Model View Controller

El modelo debe ser totalmente independiente de la vista y el controlador.

El concepto de MVC puede ser aplicado en distintos niveles en una aplicación.

El modelo puede avisar a los demás componentes cuando ocurren cambios en los datos usando el Observer Pattern (líneas punteadas en figura anterior).

El modelo es el componente que debe ser más reutilizable

Page 7: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – Model View Controller

La vista gralmente tiene una referencia al controlador e invoca métodos de este directamente.

Idealmente el controlador solo actualiza datos en el modelo, y como la vista es un observador del modelo, esta se actualiza también.

Page 8: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – La vista (1)

Page 9: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – La vista (2)

Page 10: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – La vista (3)

Page 11: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Interfaces para Observer Pattern

Page 12: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – El modelo (1)

Page 13: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – El modelo (2)

Page 14: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

MVC – El controlador (1)

Page 15: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

PropertyChangeSupport (1)

Page 16: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

PropertyChangeSupport (2)

Page 17: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

PropertyChangeSupport (3)

Page 18: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Modelos aplicados a EJB

Page 19: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Entity Access Object Pattern

Lógica de negocio implementada en Session Beans

Acceso a base de datos a través del EntityManager

Se mezclan lógica de negocios y mecanismos de acceso a los datos

Se inserta una capa más, la de los Entity Access Object (EAO), que se encarga de los detalles de acceso a datos

Page 20: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Entity Access Object Pattern

Se separa el código de consultas del código que implementa reglas de negocios, mejorando la mantenibilidad.

El código de consultas es reutilizable.

Las reglas de negocios son independientes al mecanismo de persistencia utilizado.

Page 21: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Entity Access Object Pattern

Page 22: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

La interfaz para el EAO

Page 23: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Implementación del EAO (1)

Page 24: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Implementación del EAO (2)

Page 25: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Capa de business logic

Page 26: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Factory para los EAOs

Page 27: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Session Beans como EAOs (1)

Page 28: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Session Beans como EAOs (2)

Al implementar los EAOs como session beans conseguimos Independency injection, transacciones declarativas y el Entity Manager manejado por el contenedor

Page 29: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

El modelo session facade

Para ejecutar un proceso, la capa de interfaz de usuarioinvoca un solo método de la capa de reglas de negocioscon los parámetros necesarios, y dicho método ejecutael caso de uso en su totalidad dentro del Session Bean, opcionalmente haciendo uso de uno o más EAOs

Page 30: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Ejemplo (1)

Proceso: Inscribir masivamente a los alumnos de un curso al primer examen final.

Pasos: en función al identificador del curso …

Obtener la lista de alumnos inscriptos al cursoPor cada alumno, obtener sus parciales y calcular el promedioSi el promedio es mayor a 60 crear nueva “Inscripcion”, asociando alumno al examen.Guardar la nueva inscripciónRepetir para todos los alumnos

Page 31: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Ejemplo (2). Sin session facade

Cliente Contenedor EJB

Controlador UI AlumnosEAO ParcialesEAO InscripcionEAO

Obtener alumnos

Obtener parciales

Guardar inscripción

Calcularpromedio

Page 32: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Ejemplo (3). Con session facade

Cliente Contenedor EJB

Controlador UI AlumnosEAO ParcialesEAO InscripcionEAO

Obtener alumnos

Obtener parciales

Guardar inscripción

Calcularpromedio

InscParcialesFacade

Inscribir masivo

Page 33: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Ventajas

Reducir número de invocaciones remotas

Código de reglas de negocios no esparcidos en capa de UI

Transacciones y seguridad del proceso administradas por el contenedor

Código de reglas de negocios más reutilizable

Page 34: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Integración GWT - EJB

Page 35: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Integración Web tier – EJB

GUI

Aspectos visualesEventos de usuariosFormateo de datos

EJB – Session Facade

Procesos del negocioTransacciones

EJB – EAOs

Acceso a datosPersistencia en gral

EJB – Entity Beans

Representación delmodelo

GWT, Struts, JSF, etc.

Page 36: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Integración GWT - EJB

Widget

Control visual

Controlador

Manejo de eventos

Modelo

Datos a mostrar

Browser cliente

Remote Service GWT

Servicio remoto

Servlet Container EJB – Session Facade

Procesos del negocioTransacciones

EJB – EAOs

Acceso a datosPersistencia en gral

EJB Container

Page 37: Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.

Bibliografía

GWT in practice – Robert Cooper (caps 2 y 4)

EJB 3 in action – Debu Panda (cap 12)