Está en la página 1de 6

Model-View-Controller

Separa la lgica de la interfaz de usuario de la lgica de negocio de una aplicacin Web dinmica Problema:

Cmo estructurar el controlador de aplicaciones Web complejas de modo que se obtenga reusabilidad y flexibilidad y se evite duplicacin de cdigo?

Causas:

La interfaz de usuario cambia ms frecuentemente que la lgica del negocio


La lgica del negocio, combinada con la interfaz de usuario, implica modificar la aplicacin como un todo

Aumenta la posibilidad de cometer errores en la lgica del negocio Necesariamente se debe probar toda la aplicacin, incluida la lgica del negocio, ante un cambio mnimo en la interfaz del usuario

Model-View-Controller

Causas:
La L

aplicacin li i presenta t d datos t d de di distinta ti t manera


Distintas vistas de los mismos datos son mostrados al mismo tiempo. Si un usuario realiza cambios en una vista, el sistema debe poder actualizar todas las dems vistas automticamente

Las

habilidades de un diseador son bastante diferentes a las de un desarrollador


Se mezclan los roles Una pgina es desarrollada por una sola persona (prdida de paralelismo en el proceso de desarrollo)

Model-View-Controller
Estructura

:View Depends

:Model

Updates

:Controller Instances

Model-View-Controller
Implementacin

Dos alternativas:

Patrn Page Controller:


Alternativa sencilla al Front Controller. Existe un objeto controlador por cada pgina, a diferencia del Front Controller que tiene un nico objeto para todas las solicitudes (requests) Suele ser la mejor eleccin para la mayora de las aplicaciones. Slo en aplicaciones complejas es recomendable el uso del Front Controller. Su uso es apropiado cuando:

Patrn Front Controller:


La parte relativa al controlador tiene una lgica compleja Las clases que lo implementan son parte de una jerarqua de herencia profunda La aplicacin determina la navegacin entre pginas dinmicamente, basndose en reglas configurables

Page Controller

Problema:

La mayora de las pginas dinmicas realizan tareas repetitivas


Chequeos de seguridad (usuario autenticado) Extraccin de parmetros del request Obtencin de datos de la session

Se mezcla la vista con la lgica funcional (e.g. scripted pages)

Solucin:

Implementar Page Controller


Recibe el request Accede al modelo Redirecciona el request a la vista para su actualizacin

Page Controller. Estructura


Modelo
Lgica de la aplicacin

PageController
- Recibe el request HTTP - Accede al modelo y decide la vista

Vista

Genera HTML

U vez recibido Una ibid el l request t


Se accede al modelo (en caso de ser necesario) Se redirecciona el request a la vista La vista recupera los datos (actualizados) del modelo Devuelve los resultados al usuario final

Page Controller

Fortalezas

Simplicidad

Cada pgina es gestionada por un controlador especfico Se puede reutilizar un mismo Page Controller desde mltiples pginas El controlador es el Code Behind en ASP.Net

Debilidades

E i t Existencia i d de un controlador t l d por pgina i Dependencia del framework web


Dificulta las pruebas independientes

Front Controller

Problema
La L

l lgica i comn se replica li a t travs d de t todas d l las vistas


Es necesario centralizar la lgica comn inherente a las vistas para evitar duplicacin de cdigo

Los

mismos datos del modelo se usan en ms de una vista


Se deben reducir las rutinas de recuperacin de datos, intentando hacerlas desde un slo lugar

Front Controller

Solucin:

Implementar Front Controller


Todas las requests se canalizan a travs de un slo objeto.


Recupera los parmetros Transfiere el control al comando correcto para la ejecucin del request

Client

Handler

interface Comm and +Execute() : void

ConcreteCommand1

ConcreteCommand2

Front Controller
Comportamiento
client: :handler :command :view

Send (request)

Execute (request) Transfer (request)

Front Controller

Fortalezas

Control centralizado

Se gestionan todos los requests desde una sola unidad lgica No se multiplica el controlador por vistas (Page Controller)

Configurable

Solo es necesario configurar un Front Controller para toda la aplicacin en el servidor

D bilid d Debilidades

Deben tenerse en cuenta consideraciones de rendimiento


Puede degradarse rendimiento global

Incremento de la complejidad

También podría gustarte