¿Qué significa MVC?

MVC existía originalmente en el programa de escritorio. M se refiere al modelo de datos, V se refiere a la interfaz de usuario y C se refiere al controlador. El propósito de usar MVC es separar los códigos de implementación de M y V, de modo que el mismo programa pueda usar diferentes representaciones. Por ejemplo, puede representar un lote de datos estadísticos en gráficos de barras y gráficos circulares, respectivamente. El propósito de C es garantizar la sincronización de M y V. Una vez que M cambia, V debe actualizarse sincrónicamente.

Model-View-Controller (MVC) es un patrón de diseño de software inventado por Xerox PARC en la década de 1980 para el lenguaje de programación Smalltalk-80 y se ha utilizado ampliamente en la actualidad. En los últimos años, se ha recomendado como patrón de diseño para la plataforma J2EE de Sun y cada vez es más bienvenido por los desarrolladores que utilizan ColdFusion y PHP. El patrón Modelo-Vista-Controlador es una caja de herramientas útil que tiene muchos beneficios, pero también algunos inconvenientes.

Cómo funciona MVC

MVC es un patrón de diseño que impone la separación de la entrada, el procesamiento y la salida de una aplicación. Las aplicaciones que utilizan MVC se dividen en tres componentes principales: modelo, vista y controlador. Cada uno maneja sus propias tareas.

Vista

Una vista es la interfaz que los usuarios ven y con la que interactúan. Para las aplicaciones web antiguas, la vista es una interfaz compuesta por elementos HTML. En las aplicaciones web de nuevo estilo, HTML todavía juega un papel importante en la vista, pero han surgido infinitamente nuevas tecnologías, incluidas Macromedia Flash y algunos lenguajes de marcado. ​​y servicios web como XHTML, XML/XSL, WML, etc.

Cómo manejar la interfaz de la aplicación se vuelve cada vez más desafiante. Uno de los grandes beneficios de MVC es que puede manejar muchas vistas diferentes para su aplicación. No se produce ningún procesamiento real en la vista, ya sea que los datos se almacenen en línea o en una lista de empleados. Como vista, simplemente sirve como una forma de generar los datos y permitir que el usuario los manipule.

Modelo

El modelo representa datos empresariales y reglas comerciales. Entre los tres componentes de MVC, el modelo tiene la mayor cantidad de tareas de procesamiento. Por ejemplo, podría utilizar objetos componentes como EJB y componentes ColdFusion para manejar bases de datos. Los datos devueltos por el modelo son neutrales, lo que significa que el modelo no tiene nada que ver con el formato de los datos, por lo que un modelo puede proporcionar datos para múltiples vistas. La duplicación de código se reduce porque el código aplicado al modelo solo necesita escribirse una vez y puede ser reutilizado por múltiples vistas.

Controlador

El controlador acepta la entrada del usuario y llama a modelos y vistas para completar las necesidades del usuario. Entonces, cuando se hace clic en un hipervínculo en una página web y se envía un formulario HTML, el controlador en sí no genera nada ni realiza ningún procesamiento. Simplemente recibe la solicitud y decide a qué componente del modelo llamar para manejar la solicitud, y luego determina qué vista usar para mostrar los datos devueltos por el procesamiento del modelo.

Ahora resumimos el proceso de procesamiento de MVC. Primero, el controlador recibe la solicitud del usuario y decide qué modelo debe llamarse para su procesamiento. Luego, el modelo utiliza la lógica empresarial para procesar la solicitud del usuario y finalmente devolver los datos. , el controlador utiliza La vista correspondiente formatea los datos devueltos por el modelo y los presenta al usuario a través de la capa de presentación.

Por qué usar MVC

La mayoría de aplicaciones web se crean utilizando lenguajes procedimentales como ASP, PHP o CFML. Combinan código a nivel de datos, como consultas de bases de datos, con código a nivel de presentación, como HTML. Los desarrolladores más experimentados separarán los datos de la capa de presentación, pero esto no suele ser fácil de hacer y requiere una planificación cuidadosa y prueba y error constantes. MVC fundamentalmente los obliga a separarse. Aunque construir aplicaciones MVC requiere algo de trabajo extra, los beneficios que nos aporta son incuestionables.

En primer lugar, varias vistas pueden compartir un modelo y, como mencioné, cada vez hay más formas de acceder a su aplicación. Una solución a esto es usar MVC, ya sea que sus usuarios quieran una interfaz Flash o una interfaz WAP, un modelo puede manejarlos todos; Dado que ha separado los datos y las reglas comerciales de la capa de presentación, puede maximizar la reutilización de su código.

Dado que los datos devueltos por el modelo no están formateados, el mismo componente puede ser utilizado por diferentes interfaces. Por ejemplo, muchos datos pueden representarse en HTML, pero también pueden representarse en Macromedia Flash y WAP. Los modelos también tienen capacidades de gestión de estado y persistencia de datos. Por ejemplo, los sitios web Flash o las aplicaciones de red inalámbrica pueden reutilizar los carritos de compras basados ​​en sesiones y los procesos de comercio electrónico.

Debido a que los modelos son autónomos y están separados de los controladores y las vistas, es fácil cambiar la capa de datos y las reglas comerciales de su aplicación. Si desea migrar su base de datos de MySQL a Oracle, o cambiar su fuente de datos basada en RDBMS a LDAP, simplemente cambie su modelo. Una vez que implemente el modelo correctamente, ya sea que sus datos provengan de una base de datos o de un servidor LDAP, la vista los mostrará correctamente. Dado que los tres componentes de una aplicación que utiliza MVC son mutuamente excluyentes, cambiar uno de ellos no afectará a los otros dos, por lo que puede construir buenos componentes débilmente acoplados basados ​​en esta idea de diseño.

Para mí, los controladores también brindan un beneficio, es decir, pueden usarlos para conectar diferentes modelos y vistas para satisfacer las necesidades del usuario, de modo que los controladores puedan proporcionar una forma poderosa de construir aplicaciones. Dados algunos modelos y vistas reutilizables, el controlador puede seleccionar el modelo para procesar de acuerdo con las necesidades del usuario y luego seleccionar la vista para mostrar los resultados del procesamiento al usuario.

Desventajas de MVC

La desventaja de MVC es que, debido a que no está claramente definido, no es fácil comprender completamente MVC. El uso de MVC requiere una planificación cuidadosa y, debido a que sus principios internos son complejos, lleva algo de tiempo pensar en ello.

Tendrá que dedicar un tiempo considerable a pensar en cómo aplicar MVC a su aplicación. Al mismo tiempo, dado que el modelo y la vista deben estar estrictamente separados, esto también dificulta la depuración de la aplicación. Cada componente debe probarse minuciosamente antes de su uso. Una vez que se prueben sus componentes, podrá reutilizarlos sin preocupaciones.

Según mi experiencia personal, dado que dividimos una aplicación en tres partes, usar MVC también significa que tendrás que administrar más archivos que antes, lo cual es obvio. Puede parecer que nuestra carga de trabajo ha aumentado, pero recuerda que esto no es nada comparado con los beneficios que nos puede aportar.

MVC no es adecuado para aplicaciones pequeñas o incluso medianas. Dedicar mucho tiempo a aplicar MVC a aplicaciones que no son muy grandes normalmente resultará en más pérdidas que ganancias.

MVC es una buena forma de crear software

El patrón de diseño MVC es una buena forma de crear software. Algunos de los principios que defiende, como la separación de contenido y visualización, puede ser mejor. Pero si desea aislar los componentes del modelo, la vista y el controlador, es posible que deba repensar su aplicación, especialmente los aspectos arquitectónicos de la aplicación. Si está dispuesto a aceptar MVC y tiene la capacidad de lidiar con el trabajo adicional y la complejidad que conlleva, MVC llevará su software a un nuevo nivel en términos de solidez, reutilización de código y estructura.

PD: Pensé que MVC era algo misterioso, pero en realidad es Modal View Controller. Personalmente creo que entender esto es suficiente.