Construccin de Aplicaciones Construccin de Aplicaciones
Web (MVC) Dr. Vctor J . Sosa vjsosa@tamps.cinvestav.mx Informacin sintetizada del curso: Introduccin a los servicios y servidores de informacin en Internet J uan Ramn Prez (Universidad de Oviedo. Espaa). De las tecnologas a la arquitectura De las tecnologas a la arquitectura Cmo construimos una aplicacin web? p Utilizamos una sola tecnologa? Cul de ellas podemos utilizar? C bi i l i d Combinamos varias tecnologas recogiendo sus ventajas? En qu parte de la aplicacin encaja cada tecnologa? 2 Tecnologas Servlets y JSP Tecnologas Servlets y JSP Pudiendo utilizar J SP. Es necesario desarrollar algn servlet? Cul es la mejor forma de combinar servlets y J SP? Dnde situamos el cdigo escrito en J ava? Dnde situamos el cdigo escrito en J ava? Hay otros componentes involucrados en el procesamiento de peticiones como los J avaBeans? Si es as, en qu parte de la arquitectura aparecen y cul es su papel? 3 Qu es la arquitectura de una li i aplicacin Una arquitectura se utiliza para organizar las q p g diferentes partes de una aplicacin. Las aplicaciones web pueden tener muchos elementos: elementos: Pginas J SP, clases J ava, archivos HTML. Definir una arquitectura: A d d idi di idi l li i b Ayudar a decidir cmo dividir la aplicacin web. Proporcionar una pauta para definir la forma en que todos los componentes trabajen juntos para llevar a b l f i lid d t d i l cabo la funcionalidad que se pretende conseguir con la aplicacin. 4 Arquitecturas para construir A li i W b Aplicaciones Web Arquitectura centrada en pginas. J SPs Arquitectura centrada en pginas. J SPs gestionan las peticiones directamente. Modelo 1. Arquitectura de dispatcher o centrada en servlets. Un servlet o un J SP acta de mediador o controlador, delegando la resolucin de peticiones en pginas J SP y J B M d l 2 J avaBeans. Modelo 2. 5 Arquitectura centrada en pginas Arquitectura centrada en pginas Se utilizan pginas J SP/HTML para interactuar con el p g p usuario (lgica de presentacin). Pginas J SP responsables de controlar el flujo de la li i ibi ti i di i l aplicacin: recibir peticiones, direccionar a la siguiente pgina (lgica de control o procesamiento). El acceso a los datos se lleva a cabo desde la misma pgina J SP o con J avaBeans, segn la variante variante. 6 Esquema de la arquitectura d i centrada en pginas J SP J SP Nivel de lgica de J SP J SP J SP J SP HTML / J SP HTML / J SP HTML HTML Negocio y Control J avaBeans J avaBeans J avaBeans / J S / J SP / J SP HTML / J SP J B J avaBeans J avaBeans Nivel de Datos Nivel de presentacin 7 BD Datos p Arquitectura centrada en pginas Arquitectura centrada en pginas Ventajas: j es simple de programar y permite al creador de las pginas generar contenido dinmico fcilmente, basndose en la peticin y el estado de la aplicacin. p y p Inconvenientes: Tiene problemas de mantenimiento cuando la aplicacincrece Muchos scriptlets incrustados en las aplicacin crece. Muchos scriptlets incrustados en las pginas J SP. No slo reduce modularidad y oportunidades de reutilizacin de cdigo; sino que tambin proporciona reutilizacin de cdigo; sino que tambin proporciona una separaciones de papeles de desarrollo muy pobre. 8 Modelo 1 (I) Modelo 1 (I) Esta arquitectura bsica conlleva: Esta arquitectura bsica conlleva: Invocaciones directas a pginas del servidor Cdigo J ava incrustado (scriplets) y Cdigo J ava incrustado (scriplets) y Etiquetas J SP que generan dinmicamente la salida por sustitucin dentro del HTML. El acceso a datos se realiza directamente sobre la pgina J SP. 9 Modelo 1 (II) Modelo 1 (II) Beneficios: Desde el punto de vista del desarrollador es una aproximacin muy directa al problema y fcil de abordar. El cdigo es fcil de localizar ya que se encuentra junto con la pgina que gestiona. Inconvenientes Inconvenientes Slo permite abordar aplicaciones web de pequea escala. El que todo el cdigo est dentro de las pgina impide El que todo el cdigo est dentro de las pgina impide separar papeles en el desarrollo. 10 Modelo 1 con JavaBeans Modelo 1 con JavaBeans Se utilizan J avaBeans para acceder a los datos. p La utilizacin de componentes J avaBeans permite: Separar el cdigo J ava relacionado con la lgica del i d l di d l i t negocio del cdigo de almacenamiento. Se podran utilizar etiquetas de usuario en la pgina J SP para hacer referencia al J avaBean. p Permite realizar una pequea separacin de papeles en el desarrollo de la aplicacin web. 11 Separacin de papeles en el d ll d li i b desarrollo de una aplicacin web Dominio de los desarrolladores Lgica de la Presentacin de datos desarrolladores de la aplicacin datos Base de datos Acceso a datos Dominio de los 12 Dominio de los Diseadores web Arquitectura de dispatcher o MVC MVC Los JSP se utilizan para generar el nivel de p g presentacin y los Servlets para realizar las tareas que requieren procesamiento y control. Adems el controlador gestiona la navegacin, Adems el controlador gestiona la navegacin, decidiendo a qu pgina J SP debe redireccionarse a continuacin. No aparece lgica de procesamiento dentro de la No aparece lgica de procesamiento dentro de la presentacin JSP: simplemente accede a los J avaBeans que previamente se han cargado para extraer dinmicamente su contenido extraer dinmicamente su contenido. 13 Esquema de la arquitectura MVC Esquema de la arquitectura MVC Servlet Nivel de lgica de negocio 1. Envo de peticin al controlador o J SP HTML / J SP HTML / J SP HTML HTML negocio 2. Invocacin J avaBeans J avaBeans J avaBeans / J S / J SP / J SP HTML / J SP J B 3. Redireccin a la pgina de Beans J avaBeans J avaBeans Nivel de Datos Nivel de presentacin 14 BD Datos Componentes arquitectura MVC Componentes arquitectura MVC Modelo Vista Datos (Propiedades Beans) E Beans J SPs Evento (forward) Info.Interfaz (HTML) Controlador Evento (peticin) (forward) Datos (<jsp:getproperty>) Info.Eventos ( ) Interfaz servlet N d Evento (peticin) (parmetros) 15 Navegador El Modelo El Modelo Representa la lgica de negocio de una Representa la lgica de negocio de una aplicacin. Encapsula las reglas de negocio en p g g componentes que son fciles de probar, permiten mejorar la calidad del software y promueven la reutilizacin. 16 Componentes de estado Componentes de estado El estado: Define el conjunto actual de valores del modelo. Incluye mtodos para cambiar estos valores. Estos mtodos recogen parte de la lgica de Estos mtodos recogen parte de la lgica de negocio. Deberan de ser independientes del protocolo que se tili d ll utilizara para acceder a ellos. Los JavaBeans son la eleccin lgica para implementar los componentes de estado. p p 17 Cualidades del diseo en J B JavaBeans La construccin independiente de estos p componentes permite las siguientes cualidades de diseo: Reutilizacin, la eliminacin de la lgica de Reutilizacin, la eliminacin de la lgica de presentacin, permite que diferentes aplicaciones hagan uso de la misma lgica de negocio. Calidad, recogiendo la lgica de negocio en el mismo , g g g sitio, se puede probar y revisar. Robustez, encapsulando toda la lgica en un solo sitio podemos facilitar su reutilizacin y reducir las p y posibilidades de que aparezca un error. 18 Componentes de proceso Componentes de proceso Las acciones (actions): Las acciones (actions): Definen los cambios permitidos para los estados en respuesta a los eventos. La lgica de negocio tambin determina como se construyen los componentes de proceso. 19 Alternativas en el diseo de d componentes de proceso El diseo de estos componentes permite ms p p alternativas que los de estado: En sistemas simples, las acciones pueden ser llevadas a cabo en el controlador; pero generalmente no se ; p g recomienda. Normalmente se plantea un nivel de componentes de proceso para capturar los requisitos que dirigen la p p p q q g interaccin con los componentes de estado. Frecuentemente estos componentes estn ligados a un protocolo para poder obtener informacin del un protocolo para poder obtener informacin del evento. 20 La vista La vista Constituye la lgica de presentacin de una y g p aplicacin. Los componentes de la vista obtienen el estado actual del sistema del modelo y proporcionan el actual del sistema del modelo y proporcionan el interfaz de usuario para el protocolo involucrado (en nuestro caso HTTP de los navegadores web). Como parte de la generacin del interfaz de usuario Como parte de la generacin del interfaz de usuario la vista presenta los eventos que el usuario puede activar en cada momento. JSP l l i t l i l t l i t JSP es la eleccin natural para implementar la vista. 21 El controlador El controlador Proporciona unin a toda la arquitectura. p q Responsable de: recibir eventos, determinar cual es el manejador apropiado, invocar este manejador y determinar la generacin de la respuesta apropiada determinar la generacin de la respuesta apropiada. Los servlets son la eleccin ideal para la tecnologa del controlador. 22 Tareas que debera gestionar el l d controlador Seguridad, asegurar autentificacin y autorizacin. g g y Esto podra delegarse en el motor de servlets. Identificacin de eventos. Preparar el modelo asegurar la disponibilidad de los Preparar el modelo, asegurar la disponibilidad de los componentes de modelo requeridos. Procesamiento del evento. Gestin de errores, gestionar los errores generados por los manejadores. Activar la generacin de la respuesta, pasando el Activar la generacin de la respuesta, pasando el control al generador apropiado. 23 Cuestiones de diseo Cuestiones de diseo Esta arquitectura implica, de forma inherente, un q p cierto acoplamiento entre los distintos componentes que deberamos de evitar. Ej.: La vista debe proporcionar informacin de eventos de forma que p p q puedan ser identificados de forma nica por el controlador. La vista tiene acoplamiento con el controlador por la La vista tiene acoplamiento con el controlador por la informacin de eventos y el controlador est acoplado tanto con el modelo como con la vista. Para superar este inconveniente se puede utilizar un Para superar este inconveniente se puede utilizar un fichero de inicializacin, con las capacidades de introspeccin y reflectividad de J ava. 24 Ejemplo de arquitectura MVC Ejemplo de arquitectura MVC i i ( ) (desde el contenedor de servlets) init Tabla manejadores Controlador (servlet) init( ) doGet( ) peticin init eventos Evento Manejador ( ) doPost( ) process( ) forward( ) respuesta process( ) Clases manejadoras de eventos 25 ( ) respuesta forward( ) respuesta de eve os Proyecto Struts Proyecto Struts Qu es Struts Particularidades del MVC en Struts Para qu sirve? C d tili ? Cmo se puede utilizar? Ms informacin http://jakarta.apache.org/struts http://jakarta.apache.org/struts/userGuide http://www.programacion.com/java/tutorial.joa_struts.html 26