domingo, 13 de julio de 2008

Arquitecturas Web vs MVC

Si en un post anterior hablaba de arquitecturas web y arquitecturas cliente/servidor hoy voy a hacerlo del paradigma modelo vista controlador (MVC). ¿Es posible desarrollar aplicaciones con este modelo y a la vez seguir una arquitectura en 3 capas?.

Aunque el modelo vista controlador data de 1979, la evolución sufrida por los desarrolladores durante el trascurso de los años ha llevado a que se hayan ido generando diferentes frameworks de desarrollo que se adecuen a la tecnología del momento. Así en la actualidad los frameworks más utilizados para desarrollar bajo este modelo existen para Java (Struts, Spring, JSF). Incluso Microsoft hace poco tiempo que ha anunciado una incursión en este terreno con ASP.NET MVC.

¿En qué consiste exactamente este modelo? Por Internet hay muchísima literatura al respecto, de modo que trataré de hacer una breve descripción de lo que me parece, indicando donde creo que va cada una de las capas de una arquitectura web con 3 capas. El MVC es un patrón de arquitectura software que separa la interfaz de usuario, los datos y la lógica de control en tres componentes diferentes.

Vista --> Corresponde con las interfaces gráficas. Esto corresponde claramente con la capa de presentación de la arquitectura en 3 capas.

Modelo --> Es el sitio donde se almacena el código que obtiene la información de la base de datos. Se encarga de llevar a cabo los eventos dictados por el controlador. Tendría correspondencia con la capa de acceso a datos y una parte de la capa de negocio.

Controlador --> El controlador es el que recibe la petición del usuario, decidiendo que página (vista) deberá ser mostrada. Esto implica invocar la lógica de negocio, obtener los datos (modelo) e inyectar la información en la vista para que la solicitud sea servida al usuario (o dejarla preparada para que sea la propia vista la que acceda al modelo). Corresponde con una parte de la capa de negocio.

La división que se lleva a cabo en una arquitectura en 3 capas persigue la separación de la lógica de diseño y de negocio, con el fin de que posteriormente se puedan realizar modificaciones en una capa sin que la otra se vea afectada. Sin embargo con el patrón MVC lo que se persigue hilar un poco más fino y definir la secuencia de ejecución que seguirá la aplicación para resolver las peticiones realizadas por los usuarios. Así pues se persiguen objetivos diferentes con una y otra cosa, por lo que son perfectamente compatibles.

El dibujo muestra un sencillo ejemplo con MVC, en la que el flujo de control comienza con una petición realizada por el usuario y que es recibida por el controlador. El controlador evalúa la solicitud y realiza una petición al modelo que le devuelve los datos necesarios. Una vez el controlador tiene estos datos decide que vista utilizar e inyecta los datos en esa vista para poder presentárselos al usuario.

El funcionamiento del patrón puede variar ligeramente permitiendo que la vista sea quien acceda directamente al modelo (descargando de responsabilidad al controlador), aunque siempre será el controlador quien le diga a la vista que datos debe tomar para pintarlos en pantalla.

1 comentario:

Anónimo dijo...

Gracias me sirvio bastante.....