El patrón MVC adaptado a la web

Cerca del año 2000 apareció un framework llamado **Struts** para desarrollar aplicaciones web sobre Java el cual internamente seguía el patrón MVC (más adelante hablaremos más en profundidad sobre frameworks específicos para PHP). Su principal propósito era evitar código entremezclado y enrevesado, con funciones para extraer información de la base de datos junto al código HTML de visualización, etc. En las aplicaciones Web, podríamos decir que la Vista es la página HTML y el código que provee de datos dinámicos a la página; el Modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio; el Controlador es el responsable de recibir los eventos de entrada desde la Vista.

Framework: Conjunto de herramientas que no sólo nos proporciona un API con el que trabajar sino también una filosofía de desarrollo, una "forma de hacer las cosas" estructurada y modular. Por tanto, el primer beneficio de usar un framework es que estamos haciendo las cosas de una forma ya probada, la misma idea que constituye la base de los patrones de diseño software.

Lo que antes eran acciones o eventos de un usuario en una interfaz, ahora son peticiones HTTP. Cada petición HTTP implica una acción distinta y una vista distinta, mientras que solo hay un controlador y un modelo, aunque cada petición requerirá partes distintas del mismo: por ejemplo para buscar libros en el catálogo hará falta ejecutar distinta lógica y acceder a un modelo distinto que para registrarse en una web.

En la siguiente imagen vemos una adaptación del patrón clásico MVC adaptado a la web:

Patrón MVC adaptado a la web

La arquitectura MVC separa la lógica de negocio (el modelo) y la presentación (la vista) por lo que se consigue un mantenimiento más sencillo de las aplicaciones. Si por ejemplo una misma aplicación debe ejecutarse tanto en un navegador estándar como un navegador de un dispositivo móvil, solamente es necesario crear una vista nueva para cada dispositivo; manteniendo el controlador y el modelo original. El controlador se encarga de aislar al modelo y a la vista de los detalles del protocolo utilizado para las peticiones (HTTP, consola de comandos, email, etc). El modelo se encarga de la abstracción de la lógica relacionada con los datos, haciendo que la vista y las acciones sean independientes de, por ejemplo, el tipo de gestor de bases de datos utilizado por la aplicación.

En la siguiente figura podemos ver un ejemplo de flujo de navegación por parte de un usuario:

Ejemplo de arquitectura MVC aplicada a la web

Traducido al mundo de la programación web paso por paso:

  1. El Controlador recibe una petición. Esto puede ocurrir de forma directa poniendo el usuario en el navegador la url del Controlador http://uazon.com/index.php (normalmente tendremos un controlador único que centraliza todas las acciones), o mediante un evento a través de una Vista ya renderizada (envío de un formulario por ejemplo),o por una petición AJAX.
  2. El Controlador analiza la petición y usa un Modelo para obtener datos de algún tipo.
  3. El Modelo puede leer y/o escribir datos en una base de datos.Normalmente sucede esto, aunque no siempre.
  4. El Controlador usa una Vista para poder presentar los resultados al usuario.
  5. La Vista usa el Modelo, de tal forma, que algún tipo de respuesta obtenido por la acción previa será presentado en la Vista.
  6. La Vista está renderizada con los datos del Modelo y el Controlador envía esta respuesta al usuario.
  7. El usuario obtiene la respuesta.

results matching ""

    No results matching ""