MVC (Model-View-Controller)

Documentos relacionados
Aplicaciones web con MVC. Desarrollo de aplicaciones II

BREVE INTRODUCCION A ASP.NET MVC

1 Índice Introducción Propósito Alcance Modelo Arquitectónico Inicial... 3

Java Struts Framework. Juan Fco. Rodríguez Hervella

Rafael Doña Gil. Enginyeria Tècnica en Informàtica de Sistemes. Consultor: Jose Juan Rodríguez

Desarrollo y servicios web

UNIVERSIDAD NACIONAL DEL CALLAO

Desarrollo y servicios web Sesión 18

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

Developing ASP.NET MVC 4 Web Applications

Capítulo 2 : Marco Teórico

Los seres vivos/ living things. CONOCIMIENTO DEL MEDIO 3º DE PRIMARIA

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

Práctica Java POJO de Integración de Sistemas Tienda de Comercio Electrónico

Clase 2: Arquitectura de Software

Arquitectura de Aplicaciones Empresariales. Lic. Esteban Cesar Calabria 2007

Curso JAVA EE

FUNCIONAMIENTO: FUNCIONALIDAD

Requisitos. Universidad ORT Arquitectura de Software

FRAMEWORKS (Conceptos y Prácticas)

MANUAL EASYCHAIR. A) Ingresar su nombre de usuario y password, si ya tiene una cuenta registrada Ó

Curso Desarrollo Java Web con JSP, Servlets y el MVC

Tema 4: Tecnologías Web Java

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

PATRON:DAO LENGUAJE DE PROGRAMACION: JAVA IDE: ECLIPSE FRAMEWORK: STRUST2. -Permite Abstraer y Encapsular los accesos a un repositorio de datos.

MAESTRO DE PHP PHP NIVEL 1

CAPÍTULO 14. DESARROLLO

APRENDE A CREAR UNA PÁGINA WEB CON HTML

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

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

TEMARIO. 4-Servlet Definición de servlet El Web Container y el ciclo de vida de los servlets El ciclo request- response.

Sesión 20. MVC en ruby on rails. Luisa Fernanda Rincón Pérez

Centro de Capacitación en Tecnologías de la Información

Sesión 23. Luisa Fernanda Rincón Pérez

I. DATOS DE IDENTIFICACIÓN. 1. Unidad Académica: _Facultad de Ciencias

Ficha Técnica. Categoría. Contenido del Pack. Sinopsis. Programación. - 2 Manual Teórico - 1 Cuaderno de Ejercicios - 1 CDROM

74 Prime Time. conjetura Suposición acerca de un patrón o relación, basada en observaciones.

7.1 Arquitectura de clases

Capítulo II. Arquitectura del Software

Capítulo 2. Marco Teórico

(Rich Internet Applications) (Aplicaciones de internet enriquecidas).

TFC J2EE. Aplicación Web para la gestión de facturación de una empresa de cerrajería. Sara Gutiérrez Melero ITIG Junio de 2012

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

Índice: Tema Conexión con Bases de Datos

Symfony. Framework para el desarrollo de aplicaciones Web con PHP

Programación en Capas.

Data Source. Lic. Esteban Calabria 2007

Programación PHP de bases de datos mysql

IBM WebSphere Host Access Transformation Services (HATS) V5

Frameworks & Componentes. Frameworks. Diseños reutilizables. Ejemplos de Frameworks. Fundamentos de Ingeniería de SW

Arquitectura de Software

ASP.NET MVC 3 ofrece una serie de herramientas y funciones para construir una aplicación utilizando sólo la definición de los objetos del modelo.

Sesión 17. FRAMEWORKS

Anexo 4 Documento de Arquitectura

DESARROLLO DE APLICACIÓN MÓVIL PARA EMPRESA DE BIENES RAÍCES, VERSIÓN ANDROID

Desarrollo y servicios web

Introducción al Desarrollo de Aplicaciones con Oracle ADF

Capitulo III. Diseño del Sistema.

Máster Profesional en Tecnologías de Seguridad. Seguridad en la web

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

Model View Controller Architecture. Dra. Marcela Capobianco

Agustiniano Ciudad Salitre School Computer Science Support Guide Second grade First term

Tema 8: Diseño arquitectónico Ingeniería del Software de Gestión II

Resumen. Palabras Claves: J2EE, AJAX, IEEE, GOLD, patrones, análisis, diseño, modelos, persistencia. Abstract

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Arquitectura de Empresa. Herramienta de gobierno para el alineamiento de las TI con la estrategia de negocio

Grupo de Ingeniería del Software. Conceptos básicos de formularios HTML

Tema 4: Diseño e Implementación de la Capa Web

Diseño y desarrollo de aplicaciones Web: PHP, MySql y Apache

SISTEMA DE ADMINISTRACIÓN Y GESTIÓN POR PROCESOS

FORMULARIO HTML PREPARACION DEL FORMULARIO. Que información debes solicitar al visitante de tu web?

Creación de Servicios web y modificaciones al webhosting gratuito para consumir posteriormente desde el movil

Capítulo 16. Diagrama de Clases UML

Empleo. CURSO FORMATIVO Desarrollo WEB JAVA EE. Coordinador Académico Antonio José Martín Sierra

Diseño e implementación de una tienda electrónica mediante Struts y SOAP. Rocío López Valladolid Tutor: Dr. Abelardo Pardo Sánchez

Práctica Java POJO de Integración de Sistemas Sitio Web de Apuestas Deportivas

ARQUITECTURA BÁSICA DEL ORDENADOR: Hardware y Software. IES Miguel de Cervantes de Sevilla

Diseño y desarrollo de el Generador de Tiendas virtuales usando Líneas de Diseño de productos

School Preference through the Infinite Campus Parent Portal

HERRAMIENTAS AVANZADAS PARA LA GESTIÓN DE PROYECTOS

Repaso de funciones exponenciales y logarítmicas. Review of exponential and logarithmic functions

Taller de Desarrollo de Aplicaciones Web

Unidad de Competencia Aprendizajes Esperados Semana Actividades Presenciales

INDICE. 8 Marcos Definición estructural Varios Caracteres especiales Fondos y colores Listas Divisores Vínculos y gráficos

SÍLABO DE SOLUCIONES WEB Y APLICACIONES DISTRIBUIDAS

WORKSHOP Spring Framework Developer

DISEÑO CURRICULAR ELECTIVA II. DESARROLLO DE APLICACIONES WEB

Pablo Martín Open Source Architect & Data Scientist Miembro de OpenDataSev y Grupo Drupal SVQ

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

Título del Proyecto: Sistema Web de gestión de facturas electrónicas.

Curso Java Curso Online Analista Programador Java

Transcripción:

MVC (Model-View-Controller) (...o la forma de traer orden al caos...) (BORRADOR) Universidad de los Andes Demián Gutierrez Diciembre 2010 1

MVC: Modelo Vista Controlador? Desarrollado / Ideado originalmente en XEROX PARC (Palo Alto Research Center Incorporated) por Trygve Reenskaug entre 1978 y 1979 Ver: http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html El objetivo del patrón MVC es desacoplar la presentación de la información (vista) de su representación (modelo), para así reducir la complejidad en el diseño arquitectónico (de IU) e incrementar la flexibilidad y mantenibilidad del código Tomado de: http://en.wikipedia.org/wiki/model-view-controller Desde un punto de vista muy personal (DMI), el patrón MVC es lo que le trae orden al caos, estructura al espagueti, arquitectura a la anarquía en los aspectos relacionados a la implementación de interfaz de usuario 2

Sin MVC? Lógica de Negocios Manejo del ciclo Petición-Respuesta HTML PHP Acceso a datos Interfaz de Usuario (Implementación) JavaScript Manejo de Sesiones SQL Etc... Responsabilidades difusas, todo incrustado en un mismo bloque 3

Modelo Vista-Documento? Un sólo documento, una sola forma de representar/almacenar la información Múltiples vistas, múltiples formas de mostrar la misma información, por ejemplo, un gráfico, una hoja de cálculo, un resumen estadístico, etcétera Si, yo se que es un plagio... (sue me if you can) TODO: Hacer figura propia ;-) 4

MVC: Modelo Vista Controlador? Responsabilidades? 5

MVC: Modelo Vista Controlador? Mantener en memoria la información que viene de la vista y que servirá de entrada al controlador Mantener en memoria la información generada por el controlador y que servirá de entrada para que la vista se la muestre al usuario Recibir la entrada del usuario y generar eventos al controlador. Mostrar la información del modelo al usuario Procesar los distintos eventos generados por el usuario, consumir la información proveniente de la vista que se encuentra en el modelo y generar información en el modelo para que la vista pueda mostrar 6

MVC: Modelo Vista Controlador? En realidad es más de esta forma... 7

MVC y Arquitecturas / Aplicaciones por Capas MVC!= Arquitecturas a 3 Capas Capa de Presentación Capa de Negocios (Lógica de Negocios, Reglas de Negocios, etcétera) Capa de Persistencia BD 8

MVC y Acceso a BD (M)!= Modelo de Datos (Aunque se puede) View Model BD Controller 9

MVC y Acceso a BD (M)!= Modelo de Datos (Aunque se puede) View Desde este punto de vista el modelo sirve a 2 (o 3 depende del punto de vista) propósitos ( mal asunto? Model BD Controller Si no se usa un modelo a tres capas, la lógica de negocios suele terminar aquí 10

MVC y Acceso a BD (M)!= Modelo de Datos (Aunque se puede) The Model represents your data structures. Typically your model classes will contain functions that help you retrieve, insert, and update information in your database Tomado de: http://codeigniter.com/user_guide/overview/mvc.html The model is not a database: the 'model' in MVC is both the data and the business/domain logic needed to manipulate the data in the application. Many applications use a persistent storage mechanism such as a database to store data. MVC does not specifically mention the data access layer because it is understood to be underneath or encapsulated by the model. Models are not data access objects; however, in very simple apps that have little domain logic there is no real distinction to be made. Active Record is an accepted design pattern which merges domain logic and data access code - a model which knows how to persist itself. Tomado de: http://en.wikipedia.org/wiki/model-view-controller 11

MVC y Acceso a BD (M)!= Modelo de Datos (Aunque se puede) View Diferencia bien definida entre IU y persistencia IU Model Value Objects / Data Transfer Objects / JavaBeans / POJOS / etcétera Controller Si no se usa un modelo a tres capas, la lógica de negocios suele terminar aquí DAOs, ORM, Framework de Persistencia persistencia BD 12

MVC y Acceso a BD (M)!= Modelo de Datos (Aunque se puede) View Diferencia bien definida entre IU y persistencia IU Model Value Objects / Data Transfer Objects / JavaBeans / POJOS / etcétera Controller Si no se usa un modelo a tres capas, la lógica de negocios suele terminar aquí DAOs, ORM, Framework de Persistencia persistencia BD 13

MVC: Modelo Vista Controlador? Un ejemplo en la WEB Vista (IU) (de entrada) corresponde, alimenta, rellena Modelo (de entrada) MVC (Framework) (Motor) Identifica, busca alimenta, sirve de entrada Todo es orquestado por el Framework MVC (Inversion of Control, recuerdan?) Controlador (Lógica / Reglas de Negocio) define crea, rellena Vista (IU) (de salida) alimenta, sirve de entrada vista + modelo = RESULTADO!!! Modelo (de salida) 14

MVC: Modelo Vista Controlador? Un ejemplo en la WEB HTML: Estático o generado (Ej, con PHP, JSP, etc) No es directo, es el MVC el que rellena Interacción con el navegador Vista (IU) (de entrada) corresponde, alimenta, rellena Modelo (de entrada) Request (Ej, Submit) Con la información del Request (Ej, GET / POST) MVC (Framework) (Motor) Identifica, busca alimenta, sirve de entrada define Un armazón MVC es quien toma el control (FrontController) Generalmente por alguna convención de nombre con el URL o por un parámetro especial del request Controlador (Lógica / Reglas de Negocio) crea, rellena HTML: Estático o generado (Ej, con PHP, JSP, etc) Vista (IU) (de salida) alimenta, sirve de entrada vista + modelo = RESULTADO!!! Modelo (de salida) Puede ser el mismo modelo de entrada u otro nuevo de salida 15

MVC: Modelo Vista Controlador Ejemplo Struts1: Uso de un MVC Ejemplo PHP: Uso e implementación (básica) de un MVC 16

MVC: Modelo Vista Controlador MVC (Framework) (Motor) 17

MVC: Modelo Vista Controlador Contiene la información a mostrar por la vista (la lista de productos) así como la información ingresada por el usuario (si existe) Maneja la acción de listar (Va a BD y genera la lista de productos) Genera este HTML en base al contenido del Form 18

MVC: Modelo Vista Controlador Contiene la información a mostrar por la vista (el producto a editar) así como la información ingresada por el usuario (originada por los controles de la IU) Genera este HTML en base al contenido del Form Maneja las acciones de edición Actions Tomados del listar (pantalla anterior) 19

MVC: Modelo Vista Controlador http://127.0.0.1/mvcpatternphp/go.php?act_name=product/productlistaction&method=listall Dirección ( Base?) http://127.0.0.1/mvcpatternphp/ go.php Script PHP ejecutado (go.php)?act_name=product/productlistaction&method=listall De querer hacer Parámetros de la petición (los usa el MVC para ingeniería inversa, y determinar el Form, el Action y el método dentro comprender como del Action a utilizar funciona el MVC por dónde comenzamos? Por ejemplo, que pasa si... 20

MVC: Modelo Vista Controlador... en este formulario hacemos click en enviar Click! <form method="get" action="go.php"> <!-- CAMPOS DE CONTROL DEL MVC --> <input type="hidden" name="act_name" value="product/producteditaction"/> <input type="hidden" name="frm_name" value="product/producteditform" /> <input type="hidden" name="php_self" value="product/product_edit.php" /> <input type="hidden" name="method" value="update" /> <!-- CAMPOS DE LA ACCIÓN PARTICULAR (Editar) --> <input type="hidden" name="mode" value="update"> <input type="hidden" name="bean_idnt" value="6"> <!-- Los otros campos, el nombre, la descripción, etc --> 21

MVC: Modelo Vista Controlador Diagrama de Secuencia A desarrollar en clase... 22

MVC: Modelo Vista Controlador Ver: http://en.wikipedia.org/wiki/model-view-controller#implementations_of_mvc_as_web-based_frameworks Para una lista (probablemente incompleta) de frameworks que implementan el patrón MVC en distintos lenguajes de programación 23

Gracias Gracias! 24