Capa de Presentación Capa de Presentación Responsabilidades ¡ ¡ ¡ ¡ ¡ ¡ PDF Creator - PDF4Free v2.0 Navegabilidad del sistema Formateo de los datos de salida Internacionalización Validación de los datos de entrada Interfaz gráfica de usuario Multicanalidad del sistema http://www.pdf4free.com 1 Patrón MVC (Model View Controller) Patrón arquitectónico aportado por SmallTalk Modelo 2 de aplicaciones WEB Reparte las responsabilidades de la aplicación entre tres elementos: ¡ ¡ ¡ l l l El Modelo: Core de la aplicación. Reglas de negocio y capa de persistencia La Vista: Renderizado del sistema El Controlador: Control del flujo de navegación de la aplicación. Patrón MVC Historia ¡ ¡ ¡ Inventado por Trygve Reenskaug Introducido en el entorno de desarrollo del SmallTalk 80 desarrollador en XEROX PARC. Los elementos del MVC aparecen el varios modelos de GUIs modernos l l l l PDF Creator - PDF4Free v2.0 MFCs Swing JSF Etc http://www.pdf4free.com 2 Arquitectura MVC Vista Output Modelo Input Controlador MVC El modelo ¡ ¡ Encapsula los datos y reglas específicos de la aplicación (Capa de negocio + Capa persistencia). Aporta: l l ¡ PDF Creator - PDF4Free v2.0 Métodos para el manejo de datos y servicios Métodos para acceder al estado del sistema. Mantiene registro de las diferentes vistas y cotroladores para notificar los cambios (Modelo de eventos). http://www.pdf4free.com 3 MVC La Vista Mecanismo necesario para mapear los datos provenientes del modelo al renderizado de la interfaz. Cuando el Modelo cambia, la vista es informada. ¡ ¡ l l La vista solicita al modelo la información Se responsabiliza de actualizar la pantalla ¡ Detectar áreas defectuosas (quedan descubiertas cuando estuvieron ocultas por otra ventana, por ejemplo). ¡ Redibujar la pantalla cuando se solicite. MVC El controlador ¡ ¡ ¡ PDF Creator - PDF4Free v2.0 Intercepta los eventos de entrada provenientes del usuario del sistema Traduce los eventos en invocaciones al modelo de la aplicación Activa o desactiva los elementos de la interfaz de usuario (en el ámbito de las aplicaciones Windows, pone los botones habilitados o en gris) http://www.pdf4free.com 4 Persistencia de Entidades en Sesión El único medio para almacenar el estado de la sesión del usuario en el servidor junto a la base de datos. Nos sirve de caché Muy delicado. No se debe sobrecargar, dado que existe una sesión por cada usuario activo. Origen potencial de problemas: ¡ ¡ ¡ ¡ l l La interfaz de la sesión es muy débilmente tipada, puesto que almacenamos instancias de Object Solución: Centralizar la gestión de la sesión en un solo punto… Persistencia de entidades en Sesión – Gestor de Sesión y Contexto ¡ ¡ Centralizamos TODA la lógica de manejo del objeto sesión y del contexto en un solo objeto Hacemos que el objeto presente una interfaz rígida para evitar los errores de programación … l En tiempo de compilación, desarrollando un método para cada objeto susceptible de ser cacheado ¡ ¡ ¡ l En tiempo de ejecución, comprobándolo en tiempo real y contrastándolo con la configuración externalizada en XML ¡ ¡ ¡ PDF Creator - PDF4Free v2.0 Más robusto Más tedioso de desarrollar Difícil y costoso de mantener Sólo se detectan los errores en tiempo de ejecución, pero se detectan a la primera Componente reutilizable Fácil de mantener http://www.pdf4free.com 5 Persistencia de entidades en Sesión – Gestor de Sesión y Contexto ¡ En la sesión almacenamos y cacheamos los datos propios del usuario. Ej.: l l l ¡ UsuarioBean con las propiedades del usuario Lista de privilegios de acceso consultados a base de datos. Etc. En el contexto podemos almacenar datos comunes a distintos usuarios. Ej.: l l l La lista de países que carga el combo box de la pantalla de alta La lista de idiomas Etc. Persistencia de entidades en Sesión – Consideraciones ¡ ¡ ¡ ¡ PDF Creator - PDF4Free v2.0 La sesión es delicada. Hay que tener en cuenta que hay una por usuario activo, y que en una aplicación web podemos tener de repente 500 usuarios simultáneos. Ojo con el tamaño de la sesión! La sesión permanece activa durante un tiempo determinado por lo que la presencia de usuarios sobrecarga el sistema incluso si no es simultánea. El contexto es menos delicado, puesto lo que metemos en el contexto se mete una sola vez para todos. Hay que controlar la caducidad de la información en el contexto http://www.pdf4free.com 6 Centralización de la lógica de recuperación de Información Lógica de recuperación descentralizada: Cada vez que necesitamos algo de negocio invocamos a la capa directamente Problemas: Si cambia el origen del dato tendremos que “tocar” todos los métodos que invocan el método. Ej.: Cierto resultado de un método pasa a ser cacheado en sesión o aplicación: ¡ ¡ ¡ l el cierre mensual de facturación ¡ proceso muy pesado ¡ no cambia el resultado en todo el mes -> cacheado en contexto con caducidad de 30 días. Centralización de la lógica de recuperación de Información Servlet o Action Servlet o Action Servlet o Action Object Manager Helper a Negocio PDF Creator - PDF4Free v2.0 Servlet o Action Servlet o Action Gestión de Sesión y Contexto http://www.pdf4free.com 7 Referencias URLs ¡ l l Libros ¡ l l l PDF Creator - PDF4Free v2.0 http://jakarta.apache.org/Struts http://theserverside.com Programming Jakarta Struts de O’Reilly Mastering Tomcat Development de WILEY Java Server Programming J2EE Edition de Wrox http://www.pdf4free.com 8