Upload
zorroblanco20008436
View
233
Download
0
Embed Size (px)
DESCRIPTION
Manual introductorio sobre el estilo de programación basado en MVC.
Citation preview
1MVC(Model-View-Controller)
(...o la forma de traer orden al caos...)(BORRADOR)
Universidad de los AndesDemin GutierrezDiciembre 2010
2MVC: 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 patrn MVC es desacoplar la presentacin de la informacin (vista) de su representacin (modelo), para as
reducir la complejidad en el diseo arquitectnico (de IU) e incrementar la flexibilidad y mantenibilidad del cdigo
Tomado de: http://en.wikipedia.org/wiki/Model-View-Controller
Desde un punto de vista muy personal (DMI), el patrn MVC es lo que le trae orden al caos, estructura al espagueti,
arquitectura a la anarqua en los aspectos relacionados a la implementacin de interfaz de usuario
3Sin MVC?
Responsabilidades difusas,todo incrustado en un mismo bloque
Interfaz de Usuario(Implementacin)
HTML
JavaScript
Manejo de Sesiones
Lgica de Negocios
Acceso a datos
PHP
SQL
Manejo del ciclo Peticin-Respuesta
Etc...
4Modelo Vista-Documento?
Si, yo se que es un plagio... (sue me if you can)TODO: Hacer figura propia ;-)
Un slo documento, una sola forma de
representar/almacenar la informacin
Mltiples vistas, mltiples formas de mostrar la misma informacin, por
ejemplo, un grfico, una hoja de clculo,
un resumen estadstico, etctera
5MVC: Modelo Vista Controlador?
Responsabilidades?
6MVC: Modelo Vista Controlador?
Mantener en memoria la informacin que
viene de la vista y que servir de entrada al
controlador
Mantener en memoria la informacin generada por el controlador y que servir de entrada para que la vista se
la muestre al usuario
Procesar los distintos eventos generados por el usuario, consumir la informacin proveniente de la
vista que se encuentra en el modelo y generar informacin en el modelo para que la vista pueda
mostrar
Recibir la entrada del usuario y generar eventos al
controlador. Mostrar la informacin del modelo al
usuario
7MVC: Modelo Vista Controlador?
En realidad es ms de esta forma...
8MVC y Arquitecturas / Aplicaciones por CapasMVC != Arquitecturas a 3 Capas
Capa dePresentacin
Cap
a de
Neg
ocio
s(L
gic
a de
Neg
ocio
s,R
egla
s de
Neg
ocio
s,et
cte
ra)
Cap
a de
Per
sist
enci
a
BD
9MVC y Acceso a BD(M) != Modelo de Datos (Aunque se puede)
View
Controller
Model BD
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 lgica de negocios suele terminar
aqu
Desde este punto de vista el modelo sirve a 2 (o 3
depende del punto de vista) propsitos (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
BDDAOs, ORM, Framework de Persistencia
Value Objects / Data Transfer Objects /
JavaBeans / POJOS / etctera
persistencia
IU
Si no se usa un modelo a tres capas, la lgica de negocios suele terminar
aqu
Diferencia bien definida entre IU y persistencia
13
MVC y Acceso a BD(M) != Modelo de Datos (Aunque se puede)
View
Controller
Model
BDDAOs, ORM, Framework de Persistencia
Value Objects / Data Transfer Objects /
JavaBeans / POJOS / etctera
persistencia
IU
Si no se usa un modelo a tres capas, la lgica de negocios suele terminar
aqu
Diferencia bien definida entre IU y persistencia
14
MVC: Modelo Vista Controlador?Un ejemplo en la WEB
Vista (IU)(de entrada)
MVC(Framework)
(Motor)
Controlador(Lgica /
Reglas de Negocio)
Modelo(de entrada)
Identifica,busca
corresponde,alimenta,rellena
alimenta,sirve de entrada
Modelo(de salida)
Vista (IU)(de salida)
crea,rellenadefine
vista + modelo = RESULTADO!!!
alimenta,sirve de entrada
Todo es orquestado por el Framework MVC (Inversion of
Control, recuerdan?)
15
MVC: Modelo Vista Controlador?Un ejemplo en la WEB
Vista (IU)(de entrada)
MVC(Framework)
(Motor)
Controlador(Lgica /
Reglas de Negocio)
Modelo(de entrada)
Identifica,busca
corresponde,alimenta,rellena
alimenta,sirve de entrada
Modelo(de salida)
Vista (IU)(de salida)
crea,rellenadefine
vista + modelo = RESULTADO!!!
alimenta,sirve de entrada
Interaccin con el navegador
HTML: Esttico o generado (Ej, con PHP, JSP,
etc)
Request(Ej, Submit)
Un armazn MVC es quien toma el
control (FrontController)
No es directo, es el MVC el que rellena
Con la informacin del Request (Ej, GET /
POST)
Generalmente por alguna convencin de nombre con el URL o
por un parmetro especial del request
HTML: Esttico o generado (Ej, con PHP, JSP,
etc) Puede ser el mismo modelo de entrada u otro nuevo de salida
16
Ejemplo Struts1:Uso de un MVC
Ejemplo PHP:Uso e implementacin (bsica) de un MVC
MVC: Modelo Vista Controlador
17
MVC: Modelo Vista Controlador
MVC(Framework)
(Motor)
18
MVC: Modelo Vista Controlador
Genera este HTML en base al contenido del
Form
Contiene la informacin a mostrar por la vista (la lista de productos) as como la
informacin ingresada por el usuario (si existe)
Maneja la accin de listar (Va a BD y genera la lista de
productos)
19
MVC: Modelo Vista Controlador
Genera este HTML en base al contenido del
Form
Contiene la informacin a mostrar por la vista (el
producto a editar) as como la informacin ingresada por el usuario (originada por los
controles de la IU)
Maneja las acciones de edicin Actions
Tomados del listar (pantalla
anterior)
20
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
Direccin(Base?)
Script PHP ejecutado(go.php)
Parmetros de la peticin (los usa el MVC para determinar el Form, el
Action y el mtodo dentro del Action a utilizar
De querer hacer ingeniera inversa, y comprender como
funciona el MVC por dnde comenzamos? Por ejemplo, que pasa si...
21
MVC: Modelo Vista Controlador
Click!
... en este formulario hacemos click en enviar
22
Diagrama de SecuenciaA desarrollar en clase...
MVC: Modelo Vista Controlador
23
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 patrn MVC en
distintos lenguajes de programacin
MVC: Modelo Vista Controlador
24
Gracias
Gracias!
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24