SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
1
MVC
(Model-View-Controller)
(...o la forma de traer orden al caos...)
Universidad de los Andes
Demián Gutierrez
Abril 2013
2
¿MVC: Modelo – Vista – Controlador?
Ver: http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
Desarrollado / Ideado originalmente en XEROX PARC (Palo
Alto Research Center Incorporated) por Trygve Reenskaug
entre 1978 y 1979
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, el patrón MVC es lo
que le trae orden al caos, estructura al espagueti y
arquitectura a la anarquía en los aspectos relacionados a la
implementación de interfaz de usuario
3
¿Sin MVC?
(El modelo “mata-tigres”)
Interfaz de Usuario
(Implementación)
HTML
JavaScript
Manejo de
Sesiones
Lógica de
Negocios
Acceso a
Datos
PHP
SQL
Manejo del ciclo
Petición-Respuesta
Etc...
responsabilidades difusas,
todo incrustado en un mismo bloque
4
¿Modelo Vista-Documento?
(Una Primera Aproximación)
Vista 1
Vista 2 Documento
Vista N
? Múltiples vistas,
múltiples formas de
mostrar la misma
información
Un sólo documento,
una sola forma de
representar la
información
¿En qué dirección
van las
dependencias?
¿Acoplamiento?
Esto es un modelo clásico,
lo conocí programando con MFC
5
HA
6
Framework / Orquestador
MVC: Modelo – Vista – Controlador
¿responsabilidades?
8
MVC y Arquitecturas a 3 Capas
MVC != Arquitecturas a 3 Capas
Capa de
Presentación
CapadeLógicadeNegocios
CapadePersistencia
BD
9
MVC y Acceso a BD
(M) != Modelo de Datos (Aunque se puede)
View
Controller
Model BD
Por ejemplo, CodeIgniter
http://ellislab.com/codeigniter
10
MVC y Acceso a BD
(M) != Modelo de Datos (Aunque se puede)
View
Controller
Model BD
Si no se usa un modelo a
tres capas, la lógica de
negocios suele terminar
aquí
Desde este punto de vista el
modelo sirve a 2 o 3
(¿mal asunto?)
11
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
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
Tomado de: http://codeigniter.com/user_guide/overview/mvc.html
12
MVC y Acceso a BD
(M) != Modelo de Datos (Aunque se puede)
View
Controller
Model
BD
DAOs, ORM,
Framework de
Persistencia
Value Objects / Data
Transfer Objects /
JavaBeans / POJOS /
etcétera
persistencia
IU
Si no se usa un modelo a
tres capas, la lógica de
negocios suele terminar
aquí
Diferencia bien definida
entre IU y persistencia
13
¿MVC: Modelo – Vista – Controlador?
Un ejemplo en la WEB
14
MVC: Modelo – Vista – Controlador
MVC
(Framework)
(Motor)
15
MVC: Modelo – Vista – Controlador
Genera este
HTML en base
al contenido del
Form
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)
16
MVC: Modelo – Vista – Controlador
Genera este
HTML en base
al contenido del
Form
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)
Maneja las acciones
de edición “Actions”
Tomados del
listar (pantalla
anterior)
17
http://127.0.0.1/MVCPatternPHP/
go.php
?act_name=product/ProductListAction&method=listAll
MVC: Modelo – Vista – Controlador
http://127.0.0.1/MVCPatternPHP/go.php?act_name=product/ProductListAction&method=listAll
Dirección
(¿Base?)
Script PHP
ejecutado
(go.php)
Parámetros de la petición
(los usa el MVC para
determinar el Form, el
Action y el método dentro
del Action a utilizar
De querer hacer
ingeniería inversa, y
comprender como
funciona el MVC ¿por
dónde comenzamos? Por ejemplo, que pasa si...
18
MVC: Modelo – Vista – Controlador
¡Click!
... en este formulario hacemos click en enviar
<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 -->
19
Ver:
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks
Para una lista
(seguramente incompleta)
de frameworks que implementan
el patrón MVC en distintos
lenguajes de programación
MVC: Modelo – Vista – Controlador
20
Gracias
¡Gracias!

Contenu connexe

Tendances

Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESJesus Caceres Tello
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Jose R. Hilera
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorHenry Vargas
 
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-IntroducciónLuis Fernando Aguas Bucheli
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado2008PA2Info3
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controladorEmilio Sarabia
 
Caracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosCaracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosJose Diaz Silva
 
modelo vista controlador
modelo vista controladormodelo vista controlador
modelo vista controladorcom2merwil
 
Documentacion struts2 laura.palma
Documentacion struts2 laura.palmaDocumentacion struts2 laura.palma
Documentacion struts2 laura.palmaLaura Palma
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patronesMarvin Zumbado
 

Tendances (20)

Frameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITESFrameworks MVC para desarrollo de UITES
Frameworks MVC para desarrollo de UITES
 
Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)Patrón de diseño Modelo-Vista-Controlador (MVC)
Patrón de diseño Modelo-Vista-Controlador (MVC)
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista Controlador
 
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
3-Unidad 1: Arquitectura de Diseño-1.2 Controlador-Introducción
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
El patrón MVC
El patrón MVCEl patrón MVC
El patrón MVC
 
Taller MVC
Taller MVCTaller MVC
Taller MVC
 
Documentacion struts 2
Documentacion struts 2Documentacion struts 2
Documentacion struts 2
 
MODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHPMODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHP
 
Patrones de diseño - Andrés Dorado
Patrones de diseño - Andrés DoradoPatrones de diseño - Andrés Dorado
Patrones de diseño - Andrés Dorado
 
Documentacionstruts2 luiggi
Documentacionstruts2 luiggiDocumentacionstruts2 luiggi
Documentacionstruts2 luiggi
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 
3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño3-Unidad 1. Arquitectura de Diseño
3-Unidad 1. Arquitectura de Diseño
 
Caracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetosCaracteristicas del modelo orientado a objetos
Caracteristicas del modelo orientado a objetos
 
modelo vista controlador
modelo vista controladormodelo vista controlador
modelo vista controlador
 
Documentacion struts2 laura.palma
Documentacion struts2 laura.palmaDocumentacion struts2 laura.palma
Documentacion struts2 laura.palma
 
Documentacion struts2
Documentacion struts2Documentacion struts2
Documentacion struts2
 
Desarrollo basado en patrones
Desarrollo basado en patronesDesarrollo basado en patrones
Desarrollo basado en patrones
 
Design patterns
Design patternsDesign patterns
Design patterns
 

En vedette (20)

Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitectura
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 04 diseno_ui
Clase 04 diseno_uiClase 04 diseno_ui
Clase 04 diseno_ui
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 01 agilidad
Clase 01 agilidadClase 01 agilidad
Clase 01 agilidad
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 05b pruebas introduccion
Clase 05b pruebas introduccionClase 05b pruebas introduccion
Clase 05b pruebas introduccion
 
Clase 03 XP
Clase 03 XPClase 03 XP
Clase 03 XP
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacion
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Clase 01 presentacion
Clase 01 presentacionClase 01 presentacion
Clase 01 presentacion
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
Clase 05c niveles de pruebas
Clase 05c niveles de pruebasClase 05c niveles de pruebas
Clase 05c niveles de pruebas
 
Clase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemploClase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemplo
 
Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Clase 04a requerimientos introduccion
Clase 04a requerimientos introduccionClase 04a requerimientos introduccion
Clase 04a requerimientos introduccion
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicos
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 

Similaire à Clase 10 mvc (20)

Programacion 3 mvc
Programacion 3 mvcProgramacion 3 mvc
Programacion 3 mvc
 
MODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADORMODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADOR
 
Struts en Java
Struts en JavaStruts en Java
Struts en Java
 
Modelo vistacontrolador
Modelo vistacontroladorModelo vistacontrolador
Modelo vistacontrolador
 
Modelo vistacontrolador
Modelo vistacontroladorModelo vistacontrolador
Modelo vistacontrolador
 
S01-s1-MVC.pptx
S01-s1-MVC.pptxS01-s1-MVC.pptx
S01-s1-MVC.pptx
 
Patron mvc struts
Patron mvc strutsPatron mvc struts
Patron mvc struts
 
Mvc
MvcMvc
Mvc
 
Mvc
MvcMvc
Mvc
 
Modelo mvc
Modelo mvcModelo mvc
Modelo mvc
 
MVC
MVCMVC
MVC
 
Aplicaciones en capas1
Aplicaciones en capas1Aplicaciones en capas1
Aplicaciones en capas1
 
modelo MVC.pptx
modelo MVC.pptxmodelo MVC.pptx
modelo MVC.pptx
 
Jquery Hmvc
Jquery HmvcJquery Hmvc
Jquery Hmvc
 
MVC - (Spanish)
MVC - (Spanish)MVC - (Spanish)
MVC - (Spanish)
 
Asp.net mvc
Asp.net mvcAsp.net mvc
Asp.net mvc
 
Modelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_DiseñowebModelo vista controlador #ihcpfgigs_Diseñoweb
Modelo vista controlador #ihcpfgigs_Diseñoweb
 
patrón MVC.pdf
patrón MVC.pdfpatrón MVC.pdf
patrón MVC.pdf
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
Ingenieria del software
Ingenieria del softwareIngenieria del software
Ingenieria del software
 

Dernier

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 

Dernier (20)

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 

Clase 10 mvc

  • 1. 1 MVC (Model-View-Controller) (...o la forma de traer orden al caos...) Universidad de los Andes Demián Gutierrez Abril 2013
  • 2. 2 ¿MVC: Modelo – Vista – Controlador? Ver: http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html Desarrollado / Ideado originalmente en XEROX PARC (Palo Alto Research Center Incorporated) por Trygve Reenskaug entre 1978 y 1979 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, el patrón MVC es lo que le trae orden al caos, estructura al espagueti y arquitectura a la anarquía en los aspectos relacionados a la implementación de interfaz de usuario
  • 3. 3 ¿Sin MVC? (El modelo “mata-tigres”) Interfaz de Usuario (Implementación) HTML JavaScript Manejo de Sesiones Lógica de Negocios Acceso a Datos PHP SQL Manejo del ciclo Petición-Respuesta Etc... responsabilidades difusas, todo incrustado en un mismo bloque
  • 4. 4 ¿Modelo Vista-Documento? (Una Primera Aproximación) Vista 1 Vista 2 Documento Vista N ? Múltiples vistas, múltiples formas de mostrar la misma información Un sólo documento, una sola forma de representar la información ¿En qué dirección van las dependencias? ¿Acoplamiento? Esto es un modelo clásico, lo conocí programando con MFC
  • 6. 6 Framework / Orquestador MVC: Modelo – Vista – Controlador ¿responsabilidades?
  • 7. 8 MVC y Arquitecturas a 3 Capas MVC != Arquitecturas a 3 Capas Capa de Presentación CapadeLógicadeNegocios CapadePersistencia BD
  • 8. 9 MVC y Acceso a BD (M) != Modelo de Datos (Aunque se puede) View Controller Model BD Por ejemplo, CodeIgniter http://ellislab.com/codeigniter
  • 9. 10 MVC y Acceso a BD (M) != Modelo de Datos (Aunque se puede) View Controller Model BD Si no se usa un modelo a tres capas, la lógica de negocios suele terminar aquí Desde este punto de vista el modelo sirve a 2 o 3 (¿mal asunto?)
  • 10. 11 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 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 Tomado de: http://codeigniter.com/user_guide/overview/mvc.html
  • 11. 12 MVC y Acceso a BD (M) != Modelo de Datos (Aunque se puede) View Controller Model BD DAOs, ORM, Framework de Persistencia Value Objects / Data Transfer Objects / JavaBeans / POJOS / etcétera persistencia IU Si no se usa un modelo a tres capas, la lógica de negocios suele terminar aquí Diferencia bien definida entre IU y persistencia
  • 12. 13 ¿MVC: Modelo – Vista – Controlador? Un ejemplo en la WEB
  • 13. 14 MVC: Modelo – Vista – Controlador MVC (Framework) (Motor)
  • 14. 15 MVC: Modelo – Vista – Controlador Genera este HTML en base al contenido del Form 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)
  • 15. 16 MVC: Modelo – Vista – Controlador Genera este HTML en base al contenido del Form 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) Maneja las acciones de edición “Actions” Tomados del listar (pantalla anterior)
  • 16. 17 http://127.0.0.1/MVCPatternPHP/ go.php ?act_name=product/ProductListAction&method=listAll MVC: Modelo – Vista – Controlador http://127.0.0.1/MVCPatternPHP/go.php?act_name=product/ProductListAction&method=listAll Dirección (¿Base?) Script PHP ejecutado (go.php) Parámetros de la petición (los usa el MVC para determinar el Form, el Action y el método dentro del Action a utilizar De querer hacer ingeniería inversa, y comprender como funciona el MVC ¿por dónde comenzamos? Por ejemplo, que pasa si...
  • 17. 18 MVC: Modelo – Vista – Controlador ¡Click! ... en este formulario hacemos click en enviar <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 -->
  • 18. 19 Ver: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks Para una lista (seguramente incompleta) de frameworks que implementan el patrón MVC en distintos lenguajes de programación MVC: Modelo – Vista – Controlador