Tutorial - Qué es el Modelo Vista Controlador MVC 2024

20/08/2022 - Actualizado: 05/12/2023

En general, el MVC es un diseño de arquitectura de software que separa el código en funciones distintas, con distintas capas responsables de ejecutar una función muy particular, lo que ofrece varias ventajas.

Por ejemplo, el MVC se utiliza en aplicaciones que necesitan interfaces de usuario. En la práctica, se puede utilizar el mismo patrón de arquitectura para diversas aplicaciones. Tiene su origen en el deseo de crear un software más resistente con un ciclo de vida más largo y con características como la facilidad de mantenimiento, la reutilización del código y la separación de conceptos.

Modelo Vista Controlador MVC
Modelo Vista Controlador MVC

El principio de separación del código en tres capas distintas, delimitadas por su responsabilidad, se conoce como Modelos, Vistas y Controladores en lo que se denomina Modelo, Vistas y Controladores o Modelo, Vistas y Controladores si lo desea. Veremos estas ideas en detalle en este artículo, así como los beneficios

El patrón MVC es un "invento" que existe desde hace décadas, incluso antes de la llegada de la Web. Sin embargo, ha cobrado mucho impulso en los últimos años, debido a la aparición de numerosas plataformas de desarrollo de aplicaciones web que utilizan la estructura MVC como plantilla para la arquitectura de las aplicaciones web.

Índice
  1. Diferencias entre MVC y otras arquitecturas
  2. Para que se usan los modelos
  3. Como usar las vistas
  4. Que controladores se usan
  5. Tipo de arquitectura MVC
  6. Diferencias entre lógicas de negocio y de aplicación

Diferencias entre MVC y otras arquitecturas

El aseguramiento de la calidad es una rama de la ingeniería del software que se dedica a desarrollar procedimientos para garantizar la calidad de los programas que se generan y para atender a diversos parámetros deseables para todo desarrollo, como la estructura del programa o la reutilización del código, que deben facilitar el desarrollo y el mantenimiento.

Uno de los enfoques que los ingenieros de software han buscado para mejorar los procesos de desarrollo de software es el uso de una arquitectura basada en capas, que divide el código en partes funcionales según sus roles o ideas. Por ello, cuando hablamos de MVC, lo primero que debemos entender es que sirve como mecanismo para generar aplicaciones con mayor calidad. Tal vez, para que las ventajas del MVC queden más claras para todos, podríamos utilizar algunos ejemplos:

Empecemos por algo tan básico como el HTML y el CSS, aunque no tenga nada que ver. En los primeros tiempos de HTML, tanto el contenido como la presentación estaban mezclados. Es decir, tenemos etiquetas en HTML llamadas "font" que definen las características de una fuente, y atributos como "bgcolor" que definen un fondo. Cuando añadimos una nueva funcionalidad a un sitio web, cada vez que realizamos algún cambio en los archivos HTML que lo construyen, o en las etiquetas del documento, también debemos modificar cada uno de los archivos CSS que componen un sitio web. Con el tiempo, se reconoció que esto era ineficaz, y se creó el CSS como una forma de separar el formato de un sitio web.

Todos los que escribimos programas en lenguajes como PHP empezamos combinando código PHP y código HTML (e incluso JavaScript) en el mismo archivo. Esto genera lo que se conoce como "código espagueti" Si alguna vez tuviéramos la intención de modificar la forma de presentación del material, nos veríamos empujados a pasar por todas y cada una de las páginas de nuestro proyecto.

En el caso de un equipo, si queremos que intervengan diferentes perfiles de habilidades y operen de forma independiente como diseñadores o codificadores, ambos deben acceder a los mismos archivos, y el diseñador debe manejar mucho código en un lenguaje de programación que no es el suyo, mientras que él puede estar interesado sólo en los bloques donde hay HTML.

Podríamos estar accediendo a los mismos datos en una variedad de lugares durante la manipulación de datos en una aplicación. Por ejemplo, podríamos acceder a los datos de un artículo desde la página en la que se muestra el artículo, desde la página en la que se enumeran los manuales o desde una página de backend en la que se gestionan los artículos del sitio web. Además, podemos estar repitiendo las mismas sentencias de acceso a los datos y, por lo tanto, no estamos reutilizando el código si un día cambiamos los datos del artículo (modificamos una tabla para añadir nuevos campos o alteramos los existentes a medida que cambian las demandas de nuestros artículos).

Quizás se haya encontrado en uno de estos escenarios en el pasado. Estos son sólo ejemplos básicos; hay muchas más situaciones similares cuando se utiliza una arquitectura como MVC, que nos obliga a desglosar nuestro código según su funcionalidad. Veamos las distintas partes o conceptos en los que debemos distinguir el código de nuestra aplicación ahora que entendemos las ventajas de MVC.

Para que se usan los modelos

Es la capa en la que aplica sus habilidades de análisis de datos. Por lo tanto, incluirá métodos para obtener y modificar la información, así como rutinas para hacer un seguimiento de su estado. Como lo más probable es que los datos estén en una base de datos, necesitaremos todas las operaciones que acceden a las tablas y realizan selecciones, actualizaciones, inserciones y eliminaciones.

Sin embargo, cabe destacar que mientras trabajamos con MCV, también podemos utilizar otras librerías como PDO o un ORM como Doctrine para trabajar con la abstracción y persistencia de la base de datos. En consecuencia, en lugar de escribir directamente frases SQL que a menudo dependen del motor de la base de datos que estemos utilizando, utilizamos un dialecto de acceso a datos construido sobre clases y objetos.

Como usar las vistas

Las vistas, como su nombre indica, contienen el código de nuestra aplicación que se utilizará para generar las visualizaciones de las interfaces de usuario, es decir, el código que nos permitirá renderizar los estados de nuestra aplicación en HTML. En las vistas sólo están presentes los códigos HTML y PHP, que nos permiten visualizar la salida.

En la mayoría de los casos, trabajamos con datos en la vista, pero no hay acceso directo a ellos. Las vistas requerirán los datos a los modelos y producirán la salida según lo requiera nuestra aplicación.

Que controladores se usan

Una solicitud de la aplicación contiene el código que le permite responder a las acciones solicitadas en la aplicación, como ver un artículo, comprar algo, buscar información, etc.

Tipo de arquitectura MVC

En el patrón MVC, encontrará cinco capas distintas. La capa del modelo contiene sistemas que se comunican entre sí a través de interfaces y modelos de datos y son capaces de interactuar con muchos clientes a la vez. La lógica de negocio se encuentra en la capa de negocio, que interactúa con los componentes internos llamando a los métodos de las clases proporcionadas por varios marcos de aplicación.

Con las flechas, hemos mostrado cómo colaboran los distintos componentes de una aplicación MVC. Los controladores, con su lógica comercial, sirven de enlace entre los modelos y las vistas. Sin embargo, en algunos casos, los modelos también pueden comunicar datos a las vistas. Veamos cómo funciona un esquema MVC de principio a fin.

El usuario realiza una solicitud a nuestro sitio web. Normalmente se activa al navegar por una página de nuestro sitio. El controlador es notificado de la solicitud.

Tanto los modelos como las vistas son controlados por el controlador. Éste solicita los datos a los modelos o les ordena que realicen cambios en los datos. Las vistas se solicitan con la correspondiente salida, una vez que se han completado todas las operaciones de la lógica de negocio.

Las vistas pueden necesitar más información de los modelos para crear el resultado. El controlador puede encargarse de obtener todos los datos de los modelos y transferirlos a las vistas, actuando como enlace entre ellas. Uno o ambos serían típicos, pero todo se reduce a cómo hacemos las cosas; por eso hemos coloreado esa flecha.

Las salidas se envían al usuario. Aunque, a veces, la salida puede ser enviada de vuelta al controlador, y sería el controlador el que proporciona los datos al cliente; de ahí que lo haya distinguido con una flecha de diferente color.

Diferencias entre lógicas de negocio y de aplicación

Hay un término que se utiliza con frecuencia cuando se habla de MVC que es "lógica de negocio" Es un conjunto de reglas que el software debe seguir para reaccionar ante diversas situaciones. En una aplicación, el usuario se comunica con el sistema a través de una interfaz, pero cuando activa esa interfaz para ejecutar operaciones en el programa, desencadena una cadena de actividades conocida como

Además de indicar un comportamiento cuando las cosas suceden dentro de un software, la lógica de negocio también tiene reglas sobre lo que se puede y no se puede hacer. Esto se denomina reglas de negocio. Los modelos en el MVC están en el lado del negocio. Son los que deben saber cómo comportarse en diferentes escenarios y qué tipo de cosas pueden ocurrir durante la

Suponga que está desarrollando un sistema con usuarios. Los usuarios tienen la capacidad de dejar comentarios. Si nos dicen que eliminemos a una persona en un modelo, también debemos eliminar todos los comentarios del usuario. Este es un aspecto de la lógica de negocio y se incluye en lo que la gente llama "lógica de negocio".

Incluso puede haber usuarios únicos en nuestro sistema, como los "administradores", que no pueden ser borrados hasta que se elimine su posición de administrador. Los modelos también deberían realizar comprobaciones antes de borrar al usuario, para asegurarse de que está autorizado.

Eduardo García Pérez

Eduardo García Pérez

Programador y Diseñador UAX 2.0 - Experto en #Programacion #Android #IOS y #Movilidad / Licenciado en informática por la UCM y con un master en biotecnología.

Quizás te interese...

Deja una respuesta

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

dieciseis + 4 =