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

Manual de estilo MVC

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