SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
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!

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado (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
 

Similar a 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
 

Último

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (13)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

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