PATRONES DE DISEÑO EMPRESARIALES TERCERA PARTE ELSA ESTEVEZ UNIVERSIDAD NACIONAL DEL SUR DEPARTAMENTO DE CIENCIAS E INGENIERIA DE LA COMPUTACION

Documentos relacionados
06/05/2014. Clase 6. Single Table Inheritance. Class Table Inheritance

Developing ASP.NET MVC 4 Web Applications

SISTEMAS DE INFORMACIÓN

Tecnología para la. Web (MVC)

Persistencia en Sistemas O.O.

Diseño e implementación de un framework de presentación

Diseño y Desarrollo Web. Espinola Raul 2008 basado en una Presentación de G. Gaona.

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET 2010

Arquitectura de Presentación

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

LENGUAJES JÓVENES PROGRAMADORES

Desarrollador de Aplicaciones Web con Java

Programación páginas web con PHP

APLICACIONES DE INTERNET: SOAP

Programación Orientada a Objetos y Patrón MVC en PHP5. Pablo Ramirez A.

Master en Java Certificación para Programadores

Oracle Fusion Middleware 11g: Creación de Aplicaciones con ADF I

Experto en Diseño, Programacion y Creación Web

Patrones Arquitectónicos de Software

PHP 7 Desarrollar un sitio web dinámico e interactivo

Curso Microsoft SharePoint Server 2010 Designing and Developing Applications (10232)

Patrones. Patrones GRASP GRASP GRASP. Curso de Arquitecturas de Software. Programación Orientada a Objetos Patrones GRASP

Capítulo II. Arquitectura del Software

Capítulo 2 : Marco Teórico

Avance del Proyecto Arcasa. Proyecto de Grado 2007 Instituto de Computación Facultad de Ingeniería UdelaR Montevideo - Uruguay

LENGUAJE PHP Y CAKEPHP FRAMEWORK

Capítulo 2. Marco Teórico

Evaluación Diagnóstico puesta en común. Escuela Técnica ORT - TIC

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. aplicaciones web con

Empleo. CURSO FORMATIVO Desarrollo de portales WEB en Liferay. Coordinador Académico Antonio José Martín Sierra

Aplicaciones web con MVC. Desarrollo de aplicaciones II

Desarrollo y servicios web

Programa de Programación Páginas web JavaScript y ASP.NET (Visual Basic)

UNIDAD 2: Bases de Datos en Visual Basic

SERVICIO NACIONAL DE APRENDIZAJE SENA SISTEMA INTEGRADO DE GESTIÓN Procedimiento Ejecución de la Formación Profesional Integral GUÍA DE APRENDIZAJE

Oracle 10g: Creación de Aplicaciones J2EE

MS_10962 Advanced Automated Administration with Windows PowerShell

Análisis II. Construyendo la Usabilidad desde el

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

INSTITUTO TECNOLÓGICO SUPERIOR DE SANTIAGO PAPASQUIARO PROGAMACIÓN WEB CATEDRATICO: ISC JOEL LEYVA MARES

desarrollo. Dentro del desarrollo de la tesis el proceso de modelado del sistema fue hecho con el

Cuales son los 6 lenguajes de programacion mas usados actualmente. Cuales son los 6 lenguajes de programación mas usados actualmente.

Herramientas Modernas de Programación Licenciatura en Administración de Tecnologías de Información y Comunicaciones

JSP(JAVA SERVER PAGES)

Curso JAVA EE

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

Documento informativo sobre la adecuación de las soluciones de tecnología de la información

Concepto de Arquitectura en Desarrollo Software. Arquitectura física Distribución de nodos en la red. Concepto de Arquitectura software Moderno

Curso Implementing and Maintaining Microsoft SQL Server 2008 Reporting Services (6236)

PROGRAMACIÓN PÁGINAS WEB JAVASCRIPT Y ASP.NET 3.5 (C#)

IFCD0210 Desarrollo de Aplicaciones con Tecnologías Web

Departamento de Ciencias e Ing. geniería de la Computación. Diego C. Martínez - DCIC-UNS

20488 Desarrollo de Microsoft SharePoint Server 2013 Core Solutions

Universidad de Sevilla

DIPLOMATURA DESARROLLO DE APLICACIONES JAVA

Desarrollo de aplicaciones de acceso a base de datos con JBuilder 7

Requerimientos de Software

Asignatura: Plataformas de Desarrollo de Software

Tema: Clases y Objetos en C#. Parte II.

Sistema Online de Firma Electrónica

Ingeniería Web. Navegadores Web. Fernando Barraza A.

Implementación del patrón Modelo-Vista-Controlador Utilizando Java Struts 2

Curso Developing Microsoft SQL Server 2014 Databases (20464)

BREVE INTRODUCCION A ASP.NET MVC

Introducción al curso CONTENIDOS Y REGLAS

Técnicas de Programación

Departamento de Ciencias e Ing. geniería de la Computación. Diego C. Martínez - DCIC-UNS

Curso Desarrollo Java Web con JSP, Servlets y el MVC

Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas

Clase 2: Arquitectura de Software

HTML & Fila Zilla. Temario:

Arquitectura de aplicaciones para Smart Devices

Tema Tecnologías de Desarrollo

Programa de Programación Páginas web JavaScript y ASP.NET 3.5 (C#)

FRAMEWORKS (Conceptos y Prácticas)

20483 Programación en C#

Diplomado Java Web Programming with Servlets, JSP, JSF & Ajax

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

DISEÑO CURRICULAR ELECTIVA II. DESARROLLO DE APLICACIONES WEB

Desarrollo Software Gran Escala

Diego Seco Material adaptado de: Fernando Bellas Universidade da Coruña Desarrollo de Aplicaciones Empresariales

COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B)

PLANIFICACIÓN DE LA DOCENCIA UNIVERSITARIA GUÍA DOCENTE. Diseño de software y metodologías de desarrollo

Visual Studio 2010 Desarrollo de aplicaciones web con C# 4, Framework Entity 4, ASP.NET 4.0,...

Información y materiales sobre la asignatura Toda la información y materiales sobre la asignatura los podeis encontrar en:

Análisis, Diseño e Implementación de un Sistema de Información Web para Entornos de Fabricación Reconfigurable

Introducción a los patrones de Software

Microsoft Visual Studio está basado en.net framework. Definiciones de.net Framework:

Arquitectura de Aplicaciones Empresariales. Lic. Esteban Cesar Calabria 2007

Bondades del Sistema de Control Médico General (SCMG)

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype

Introducción a Swing. Taller de Programación 2016

Seminario Diseño Web

DWB-1502 SATCA 1 : (1-4-5) Carrera:

ÍNDICE CAPÍTULO I AGRADECIMIENTO DEDICATORIA. Página

Diseño arquitectónico 1ª edición (2002)

Elección de tecnología para la capa de presentación de SOA. Huibert Aalbers Senior Certified Software IT Architect

MS_10554 Developing Rich Internet Applications Using Microsoft Silverlight 4

Unidad V: Programación del lado del servidor

Transcripción:

PATRONES DE DISEÑO EMPRESARIALES TERCERA PARTE ELSA ESTEVEZ UNIVERSIDAD NACIONAL DEL SUR DEPARTAMENTO DE CIENCIAS E INGENIERIA DE LA COMPUTACION

CONTENIDO 1 PATRONES DE PRESENTACION INPUT CONTROLLER PATTERNS Model View Controller Page Controller Front Controller VIEW PATTERNS Template View Transform View Two Step View Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 2

PATRONES DE PRESENTACIÓN MOTIVACION Una de los cambios mas importantes en las aplicaciones empresariales en los últimos tiempos fue la utilización de las interfaces de usuario (IU) basadas en la Web. Ventajas de IU basadas en la Web: No se necesita instalar software en el cliente Se puede adoptar un enfoque común de IU Se provee un fácil acceso universal Presentación Dominio Acceso a Datos Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 3

PRESENTACION WEB 1 El desarrollo de una aplicacion web comienza con el software en el servidor. Usualmente, o se utiliza un archivo de configuracion que indica que URLs deben ser manejadas por que programas o un servidor web puede manejar varias clases de programas o el trabajo del servidor web es interpretar el URL de un pedido y pasar el control al programa del servidor Web Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 4

PRESENTACION WEB 2 Hay dos formas de estructurar un programa en un servidor web: como un script un programa, usualmente con funciones o metodos para manejar el HTTP call; ejemplos: CGI scripts y Java servlets es recomendado cuando se necesita interpretar un pedido como un page server un programa estructurado en base a la pagina de texto resultado, se insertan scriptlets de codigo HTML para ser ejecutados en determinados puntos; ejemplos: PHP, ASP, y JSP es recomendado cuando se necesita formatear una respuesta Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 5

DOS TIPOS DE PATRONES PATRONES DE CONTROLADOR DE INPUT (INPUT CONTROLLER PATTERNS) PATRONES DE VISTAS (VIEW PATTERNS) o Model View Controller o Page Controller o Front Controller o Template View o Transform View o Two Steps View Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 6

MODEL-VIEW-CONTROLLER DESCRIPCION Separa la interacción de la interfaz de usuario en tres roles distintos View Controller Model Uno de los patrones de diseño más conocidos, teniendo influencia desde su creación (1970) en muchos frameworks de UI y en la forma de pensar sobre el diseño de interfaces de usuario. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 8

MODEL-VIEW-CONTROLLER COMO TRABAJA? ROLES MODELO VISTA CONTROLADOR o es un objeto que representa al dominio, contiene datos y comportamiento distinto a los de la UI o en su forma más pura de OO, sería un objeto del Domain Model o también podría ser un Transaction Script del Dominio o representa la visualización del modelo en la interfaz de usuario o sólo conoce como mostrar la información o toma información del request, invoca al objeto del modelo correspondiente y, en base a los resultados obtenidos, determina qué vista es la apropiada para mostrar. Luego le pasa el control a la vista, junto con los datos de respuesta. o toma la entrada del usuario, manipula el modelo y refresca la vista apropiadamente. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 9

MODEL-VIEW-CONTROLLER PRINCIPALES SEPARACIONES SEPARAR LA PRESENTACIÓN DEL MODELO o Es uno de los más importantes principios de diseño. o Generalmente tienen intereses distintos Al desarrollar una vista, nos preocupamos por mecanismos de UI y por cómo diseñar una buena UI. Al trabajar con el modelo, se piensa en términos de reglas de negocio y, quizás, de interacciones con la base de datos. o Se podría querer ver la misma información del modelo de distintas formas. o Objetos no visuales son más fáciles de testear que objetos visuales. o La presentación depende del modelo pero el modelo no depende la presentación. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 10

MODEL-VIEW-CONTROLLER PRINCIPALES SEPARACIONES SEPARAR EL CONTROLADOR DE LA VISTA o No es tan importante, pero igualmente brinda beneficios. Permitiría tener más de un controlador por vista, o distintas vistas usar el mismo controlador. o Ejemplo: Soportar comportamiento de edición y visualización con una vista. Podríamos tener 2 controladores, uno para cada caso, donde los controladores son Strategies (GoF) de la vista. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 11

MODEL VIEW CONTROLLER CUANDO UTILIZARLO? Cuando las separaciones indicadas anteriormente (especialmente la separación de la presentación y el modelo) son útiles. Si se tiene una aplicación muy simple donde el modelo no tiene comportamiento. Si las tecnologías a utilizar no brindan la infraestructura necesaria. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 12

MODEL VIEW CONTROLLER EJEMPLOS TECNOLOGÍAS Java.Net PHP Javascript FRAMEWORKS Spring MVC Struts JSF Seam Tapestry ASP.NET MVC CakePHP, Lamplighter (ex Fuse) Symfony Backbone.js, Knockout.js, JavascriptMVC, Angular.js Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 13

PAGE CONTROLLER DESCRIPCION Un objeto que maneja un request para una página o acción de una aplicación web Page Controller tiene un controlador para cada página lógica de la aplicación web. El controlador puede ser la página en sí misma (frecuente en ambiente server pages), o puede se un objeto separado que se corresponda con la página. Sin embargo, este patrón de diseño apunta a una alternativa de un path que conduce a un archivo que maneja un requerimiento Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 14

PAGE CONTROLLER COMO TRABAJA? IDEA BÁSICA o Un módulo (clase o lo que fuera) actúa como controlador para cada página de la aplicación web. o En la realidad, existirá un controlador por cada acción (incluidas los eventos) RESPONSABILIDADES o Decodificar la URL y extraer cualquier dato del request que sea necesario para realizar la acción requerida. o Crear e invocar objetos del modelo para procesar los datos de entrada. Los objetos del modelo no necesitan conocer al request. o Determinar qué vista se debe mostrar y enviarle el modelo que corresponda. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 15

PAGE CONTROLLER FORMAS DE IMPLEMENTACIÓN SCRIPT CGI script, Servlet, etc o Script que actúa como handler y controlador SERVER PAGE RECOMENDACIONES El web server le pasa el control al script, el script lleva a cabo las responsabilidades de un controlador y finalmente transfiere el control a la vista que corresponda. ASP, ASP.NET, PHP, JSP, o Generalmente combina los patrones Page Controller y Template View en un mismo archivo. Esto favorece al Template View en detrimento del Page Controller (más difícil estructurar el modulo) o Para evitar scriptlets Utilizar helpers: La server page llama, en primer lugar, al helper para que maneje la lógica. Luego el helper le retorna el control a la página o se lo transfiere a otra. o No necesita ser una única calase o Se podrían tener ambas alternativas en una misma aplicación Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 16

PAGE CONTROLLER - EJEMPLO Página de visualización simple con servlet Page Controller y una vista JSP Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 17

PAGE CONTROLLER CUANDO UTILIZARLO? Cuando mucha de la lógica del controlador es muy simple, ya que no agrega demasiado overhead. Cuando hay mucha complejidad navegacional, sería preferible usar un Front Controller Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 18

FRONT CONTROLLER DESCRIPCION Un controller que maneja todos los request para una aplicación web. Front Controller consolida el manejo de requests, canalizándolos a través de un único objeto handler. Este objeto lleva adelante comportamiento común (seguridad, i18n, logging, etc.) y luego despacha el request a un command para realizar el comportamiento específico. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 19

FRONT CONTROLLER COMO TRABAJA? IDEA BÁSICA o Un Front Controller maneja todas las llamadas a una aplicación web o Está estructurado en 2 partes: un web handler y una jerarquía de comandos. o Web Handler: Es el objeto que realmente recibe POSTs y GETs del web server Obtiene información de la URL y del request para decidir qué tipo de acción iniciar Delega al command correspondiente la atención del requerimiento. Generalmente es implementado como una clase y no con una server page. No produce ninguna respuesta por sí mismo. o Comandos: Son clases y no server pages Generalmente no necesitan conocimiento del ambiente web, aunque muchas veces se les pasa el request HTTP. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 20

FRONT CONTROLLER SELECCIÓN DEL COMANDO ESTÁTICA o Parsea la URL y utiliza lógica condicional o Tiene las ventajas de la lógica explícita: Chequeos en compilación Flexibilidad en el formato de la URL Uso con Intercepting Filter DINÁMICA o Utiliza un patrón de URL y utiliza instanciación dinámica para crear comandos. o Permite agregar nuevos comandos sin cambiar el web handler. o Implementación Poner el nombre de la clase comando en la URL Usar properties files / XMLs para mapear las URLs con los comandos. o Es un decorador que wrappea al web handler de un Front Controller permitiendo construir un pipe & filter o Permite manejar autenticación, logging, i18n, etc. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 21

FRONT CONTROLLER - EJEMPLO http://localhost:8080/isa/music?name=astor&command=artist Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 22

PAGE CONTROLLER CUANDO UTILIZARLO? Si las ventajas pagan el esfuerzo: Si se tiene una aplicación muy simple donde el modelo no tiene comportamiento. Sólo un Front Controller tiene que ser configurado en el web server. Con comandos dinámicos, se podrían agregar comandos sin ningún cambio más que en la configuración. No es necesario que los comandos sean thread-safe, ya que son creados por cada request Permite factorizar código que, de otra forma, estaría duplicándose en las Page Controller. Se puede mejorar el comportamiento del Front Controller, a través de decoradores para autenticación, codificación de caracteres, i18n, etc, y agregarlos a través de un archivo de configuración. Es más complejo que un Page Controller Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 23

DOS TIPOS DE PATRONES PATRONES DE CONTROLADOR DE INPUT (INPUT CONTROLLER PATTERNS) PATRONES DE VISTAS (VIEW PATTERNS) o Model View Controller o Page Controller o Front Controller o Template View o Transform View o Two Steps View Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 24

TEMPLATE VIEW DESCRIPCION Renderiza información en HTML embebiendo markers en una página HTML. HTML Estático + Markers Especiales = Página Web Dinámica Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 25

TEMPLATE VIEW COMO TRABAJA? IDEA BÁSICA o Embeber markers en una página HTML cuando ésta es escrita. o La página puede ser diseñada de la manera usual, con editores WYSIWYG. EMBEBIENDO LOS MARKERS o Tags del estilo HTML Trabajan bien con editores WYSIWYG Con tags XML bien formados, se pueden usar herramientas de manejo de XML para editar las páginas, permitiendo que la página sea diseñada como HTML Además de proveer un conjunto estándar de tags, muchos entornos permiten definir tags propios que satisfagan las necesidades. o Text markers o Los editores WYSIWYG los ignoran, aunque a veces pueden meter ruido (spell checking) o La sintaxis puede ser más simple que los toscos XML / HTML Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 26

TEMPLATE VIEW USO DE SCRIPTLETS DEFINICIÓN o Server pages (ASP, JSP, PHP) generalmente permiten embeber lógica de programación arbitraria en las páginas, llamada scriptlets. o Si bien pueden ser pragmáticos en algún sentido, conviene no abusar, limitándonos al comportamiento estándar de un Template View. DESVENTAJAS o Elimina la posibilidad de que los diseñadores gráficos diseñen las páginas. o La página pierde su estructura y, con ello, su capacidad de modularización. o Podrían llegar a confundir las diferentes capas de una aplicación empresarial. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 27

TEMPLATE VIEW NO USO DE SCRIPTLETS HELPER OBJECTS o Tienen toda la lógica de programación real. o Una página solamente lo invoca, lo cual simplifica a la página y la hace más Template View pura. o Es la manera de minimizar el uso de scriptlets o Permite que los diseñadores gráficos diseñen la página, mientras que los programadores se concentran en los helpers Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 28

TEMPLATE VIEW ROL o Template View tiende a ser la vista en un MVC. o En muchos sistemas, sólo jugará ese rol. o En otros, generalmente más simples, podrá jugar el rol del controller y, posiblemente, el del modelo (aunque esto último es importante que se evite) Es importante asegurar que estas responsabilidades sean manejadas por el helper, y no por la página, ya que involucran lógica de programación. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 29

TEMPLATE VIEW MANEJO DE EXCEPCIONES CUIDADO! o Los errores durante la compilación/interpretación de un Template View, generalmente no tienen red de contención. o Asegurar que la aplicación maneje estos errores. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 30

TEMPLATE VIEW CUANDO UTILIZARLO? Permite comprender el contenido de la página mirando la estructura de la página. Esto permite que diseñadores gráficos puedan trabajar con las páginas, enfocando a los programadores a la resolución de los helpers. La implementación más común hace muy fácil poner lógica complicada en la página, comprometiendo su mantenibilidad. Es más difícil de testear que Transform View Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 31

TRANSFORM VIEW DESCRIPCION Una vista que procesa datos del modelo elemento por elemento y los transforma en HTML Usar Transform View para resolver la vista en MVC significa pensarlo como una transformación donde los datos del modelo conforman la entrada de dicha transformación y el HTML la salida. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 32

TRANSFORM VIEW COMO TRABAJA? IDEA BÁSICA o Escribir un programa que recorra los datos devueltos por el dominio y los convierta a HTML: Atraviesa la estructura de datos del dominio Reconoce a cada dato Escribe la sección de HTML particular para el dato DIFERENCIAS CON TEMPLATE VIEW o La forma en la cual la vista está organizada Template View orientada a la salida Transform View orientada a la entrada Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 33

TRANSFORM VIEW IMPLEMENTACIÓN XSLT es la más frecuente o Es un lenguaje de programación funcional o Tiene un tipo diferente de estructura en lugar de explícitamente llamar a procedimientos, reconoce elementos en los datos del modelo e invoca las transformaciones apropiadas. o Requiere que la entrada sea un XML Si el tipo de retorno natural de la lógica de dominio es XML o algo automáticamente transformable a XML (por ej, objetos.net) Poblando un Data Transfer Object que sepa serializarse a XML. XML Model XSL Engine HTML XSLT Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 34 View

TEMPLATE VIEW CUANDO UTILIZARLO? XSLT es portable a casi todas las plataformas web. Es más simple de usar si los datos vienen como XML Evita dos grandes problemas de Template View: Es más fácil enfocarse solamente en la renderización de HTML, evitando meter lógica en la vista Es más fácil ejecutar la Transform View y obtener la salida para testearla. Si bien hay herramientas para trabajar con XSLT, no son tan sofisticadas como las existentes para Template Views. XSLT puede ser un lenguaje difícil de aprender por su naturaleza funcional. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 35

TWO STEP VIEW DESCRIPCION Transforma datos del dominio en HTML en dos pasos: primero construyendo algún tipo de página lógica, y luego renderizando la página lógica a HTML Muchas veces se quiere realizar un cambio en el look & feel de la aplicación. Two Step View resuelve ese problema, separando la transformación en dos etapas: 1. Transforma los datos del modelo en una presentación lógica sin ningún formateo específico. 2. Convierte la representación lógica con el formato apropiado. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 36

TWO STEP VIEW COMO TRABAJA? IDEA BÁSICA o Hacer la transformación en un proceso de 2 etapas: 1) Ensamblar la información en una estructura de pantalla lógica que sea descriptiva de los elementos de pantalla sin usar HTML o o Su responsabilidad es acceder al modelo orientado al dominio (una base de datos, un modelo de dominio real o un DTO), extraer la información relevante para la pantalla, y poner dicha información en una estructura orientada a la presentación. Dicha estructura podría incluir campos, encabezados, pie de página, tablas, selectores, etc. 2) Tomar la estructura orientada a la presentación y renderizarla en HTML o Conoce cada elemento de la estructura orientada a la presentación y genera el HTML correspondiente. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 37

TWO STEP VIEW COMO TRABAJA? IMPLEMENTACIONES 1) Two-step XSLT - Hay dos XSLT style-sheets: o Transforma el XML orientado al dominio en un XML orientado a la presentación o Transforma el XML orientado a la presentación a HTML 2) Clases o Se define la estructura orientada a la presentación como un conjunto de clases: una clase tabla, una clase fila, etc. Etapa 1: Toma la información del dominio e instancia estas clases en una estructura que modele una pantalla lógica. Etapa 2: Renderiza las objeto a HTML, haciendo que cada objeto genere su HTML o teniendo un generador separado. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 38

TWO STEP VIEW CUANDO UTILIZARLO? Permite realizar cambios globales con mayor facilidad. Resuelve dos situaciones particulares: Aplicaciones web multi-apariencia - se necesita que cada cliente pueda determinar su look & feel Aplicaciones web mono-apariencia - se necesita una look & feel consistente durante toda una aplicación Para variaciones de multi-apariencia, donde se pueden generar dos tipos distintos de HTML: para browser desktop y para mobile. Si tenemos una aplicación intensiva en diseño, donde cada página se ve distinto. Hay muy pocas herramientas para trabajar con esta alternativa. Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 39

RESUMEN PATRONES DE PRESENTACION INPUT CONTROLLER PATTERNS o Model View Controller o Page Controller o Front Controller VIEW PATTERNS o Template View o Transform View o Two Step View Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 40

PARA VER Making Architecture Matter Martin Fowler https://www.youtube.com/watch?v=dngazywmgr0 Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 41

BIBLIOGRAFIA Patterns of Enterprise Application Architecture (2002) Martin Fowler www.martinfowler.com Arquitectura y Diseño de Sistemas Bahía Blanca 24 de mayo de 2017 42

Elsa Estevez ece@cs.uns.edu.ar