Qué es Modelo-Vista-Controlador

Qué es Modelo-Vista-Controlador

En este artículo contamos detalladamente qué es el concepto Modelo-Vista-Controlador (MVC) y todo lo que necesitas saber sobre él, ¡comenzamos!

Modelo-Vista-Controlador es un término muy conocido en el mundo de la programación. Si has estudiado informática, programación o simplemente te gusta este mundillo, es muy probable que hayas oído hablar de él anteriormente, pero ¿qué es realmente?

Modelo-vista-controlador, abreviado MVC, es un tipo de arquitectura de software en el que se estipula que los datos (modelo), la interfaz de usuario (vista) y la lógica de control (control) son tres componentes distintos. Cada uno de estos componentes desempeña funciones específicas.

La siguiente imagen muestra un esquema simple de Modelo-vista-controlador.

Esquema de la arquitectura modelo-vista-controlador.

Este tipo de arquitectura de software se lleva años utilizando en todo tipo de aplicaciones, ya que ha demostrado con creces su validez. Se emplea en todo tipo de software, desde aplicaciones web hasta programas de escritorio.

Resumiendo mucho, el comportamiento es el siguiente:

La vista es el componente encargado de generar la interfaz de usuario. El modelo se encarga de gestionar los datos y la información. El controlador podría decirse que es un intermediario entre los anteriores componentes, que se encarga de indicar a la vista y al modelo como deben actuar a continuación.

Veamos con más detalle las funciones de cada uno de ellos:

Modelo

Icono de base de datos, componente modelo del modelo-vista-controlador.

El modelo es el componente encargado de gestionar la información y los datos con los que trabaja la aplicación. Administra todos los accesos a dicha información, tanto a ficheros, como a clases o bases de datos.

En ocasiones envía a la vista la información que ésta necesita mostrar, aunque, generalmente, el modelo interactúa únicamente con el controlador. Y es el controlador quien le indica al modelo que información debe manipular o consultar.

Vista

La vista presenta o muestra la información necesaria en un formato apropiado con el que el usuario pueda interactuar. En otras palabras, es el componente que, tras recibir la información, genera la interfaz de usuario de la aplicación, botones, textos, ventanas, llamadas a la acción, estilos, etc. Todo aquello que el usuario observa es generado por este componente.

Tareas de la Vista de la arquitectura Modelo Vista Controlador, diseño web Vitoria.

Controlador

Funciones de un Controlador en diseño web Vitoria.

El controlador gestiona los eventos y acciones del usuario, en base a lo cual realiza peticiones de información al modelo o le ordena actualizar la información presente. También le dice a la vista cómo debe actuar y si ha de actualizar la información que se muestra en pantalla, navegar a otras ventanas, etc.

Se podría decir que es el intermediario entre el modelo y la vista y es el componente que decide qué acciones se van a realizar a continuación.

Flujo de control

El software desarrollado con el patrón modelo-vista-controlador generalmente sigue el siguiente flujo de interacción:

  1. El usuario interactúa con la interfaz (vista) de alguna manera, por ejemplo, pulsando un botón o enlace, haciendo scroll, etc.
  2. El controlador recibe por parte de los eventos de la interfaz la acción que el usuario ha realizado y gestiona dichos eventos decidiendo la siguiente acción.
  3. El controlador efectúa una petición al modelo, el cual consultará nueva información, la actualizará o la borrará. En ciertas ocasiones el controlador no verá esto necesario y le enviará una respuesta directa a la vista.
  4. El modelo enviará la nueva información o petición al controlador el cual a su vez delegará en la vista la tarea de desplegar la interfaz de usuario con los datos actualizados.
  5. Finalmente la interfaz queda a la espera de nuevas interacciones por parte del usuario, comenzando el ciclo de nuevo.

En algunas implementaciones la vista y el modelo pueden llegar a interactuar directamente, aunque no es lo habitual.

Por qué utilizar Modelo-Vista-Controlador

Este tipo de arquitectura software tiene grandes ventajas, aunque éstas también depende del ámbito en el que se vaya a desarrollar. No es lo mismo desarrollar una aplicación web que un programa de escritorio o cliente-servidor. MVC generalmente es utilizado para los entornos de desarrollo web o aplicaciones de escritorio. Veamos cuáles son las ventajas que presenta emplear este patrón.

  • Estandarización: MVC es un modelo de arquitectura muy estandarizado por lo que es muy sencillo buscar todo tipo de información acerca de él, además hay muchísimos entornos y Frameworks que implementan esta arquitectura de forma nativa. En este enlace puedes ver qué Frameworks PHP implementan MVC.
  • Funciona muy bien en aplicaciones web.
  • Reutilización: Este tipo de arquitectura presenta una estructura base por lo que ahorraremos tiempo a la hora de crear nuevos proyecto. Además, permite reutilizar código de modo muy sencillo.
  • Los modelos pueden tener múltiples vistas.
  • Sigue un flujo de interacción sencillo, por lo que no es complicado para el desarrollador seguir los pasos que da el software, gracias a lo cual las tareas de mantenimiento o actualizaciones son sencillas.
  • Fácil de extender: Crear o añadir nuevas funcionalidades es más sencillo que en otro tipo de arquitecturas.

En definitiva, el patrón Modelo-Vista-Controlador es sencillo de implementar tiene muchas ventajas y su flujo de interacción es relativamente sencillo de seguir. Además, es una de las arquitecturas software más utilizadas del mundo, por lo que hay una gran comunidad en internet a la que podrás consultar información.

Espero que este artículo te haya sido de utilidad y que haya aclarado tus dudas. ¡Gracias por leer el artículo!

2 comentarios en «Qué es Modelo-Vista-Controlador»

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Puedes usar estas etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>