Esta obsoleto el patrón MVC ?

Llevamos utilizando el patrón MVC (Modelo.Vista,Controlador) hace ya muchos años, en ese intervalo han cambiado las bases de datos, los terminales en donde se visualizan esos datos, los lenguajes de programación y gran parte de nuestra forma de trabajo, y con todo eso….¿Estamos seguros de la adecuidad de nuestro modelo MVC? ¿Está todavía vigente su utilidad… o ha quedado obsoleto?. Me gustaria plantearos mi punto de vista en este articulo.

El modelo MVC en la actualidad

Supongo que en cuanto he mencionado estas tres letras, os ha venido a la mente la ya tan conocida figura

diseño MVC

El concepto es claro, y la división de funciones que establece es terriblemente cómoda y escalable

Modelo

Representa nuestra base de datos, sea cual sea ella, porque  solo hemos de mantener una imagen de nuestras tablas, tal y como nosotros las vemos en nuestra programación. Realmente, en este entorno es donde se hace la adaptación entre como las vemos nosotros, y como se han de guardar en disco, ya que influirá la BBDD que estemos utilizando

Hoy en día, existen distintos ORMs que nos permiten hacer esa adaptación, como Hibernate, Doctrine, de tal forma que para nosotros, no nos preocupará (demasiado) como se guardaran los datos…

Vista

En este grupo, se ha de encontrar todas las herramientas que necesitemos para mostrar la información y/o recogerla.

Si hacemos bien las cosas, aquí no debería existir ni una sola regla de negocio, a menos que fuera para controlar la presentación. Con eso me refiero que por ejemplo, si hemos de multiplicar cantidad por precio para mostrar importe, nunca lo deberemos hacer en una vista

A la vista le entregamos todos los campos operados, de tal forma que su única misión es controlar la presentación en pantalla

Controlador

En este grupo, podemos ubicar el resto de componentes. El controlado, como tal, se ha de encargar de establecer los caminos para poder mostrar los modelos, o para recoger datos de la vista y prepararlos para que puedan incorporarse a los modelos,  y así guardarlos.

Para ello, hará llamadas a los servicios que se requieran, sin complicar en exceso el programa Controlador como tal

Lo que se obtiene

Si os dais cuenta, con ese reparto de funciones, nuestro aplicativo estará segmentado de tal manera que si debemos cambiar la base de datos, solo será necesario tocar la zona del modelo; si el cambio se produce a nivel de diálogo (cambio de pantallas, protocolos…) solo deberemos cambiar las vistas, y podremos minimizar el impacto

Y entonces… ¿porque va a quedar obsoleto?

La estructura MVC nace cuando internet no es un factor importante en la vida empresarial. Nuestras aplicaciones corrian en máquinas; en local, o con estructuras cliente/servidor en donde todo se programaba.

Incluso, mientras que las máquinas clientes eran poco potentes, la unica adaptacion fue que las vistas empezaron a generar y recibir  HTML

Pero todo el trabajo, se tenia que seguir desarrollando en el potente servidor. Sirviera a un cliente o a un millón.

Esto, empieza a cambiar cuando nos encontramos con un lenguaje (Javascript) incorporado a los navegadores, que empezaba a plantear serias posibilidades de trabajar con él. El que las lentas maquinas de los clientes empiecen a mejorar y se conviertan en potentes procesadores, hace mas clara la apuesta, y la aparición de frameworks y bibliotecas como Angular, React o Vue terminó de establecer el cambio

Con este nuevo panorama, no es que MVC quede obsoleto, sino mas bien que toda la parte de Vista desaparece o casi.

Con estas posibilidades, puede ser interesante, el crear una aplicación que se limite a facilitar datos y recogerlos, esto es dejando las partes de Modelo y Controlador igual, y reducir la Vista a un simple sistema de traducción, por ejemplo a JSON o XML ….

Figura MV

que incluso se puede integrar dentro del mundo del Controlador y eliminar totalmente la Vista, ya que ahora no tiene que controlar pantallas, solo facilitar datos…..

Nuestra aplicación, a nivel de servidor, queda convertida en una API REST a la que podremos permitir que se conecte todo lo que queramos, y la representación  de la entrada/salida se delega al cliente.

Lo que hemos de considerar

Al adoptar esta solucion, se nos liberan enormes cantidades de trabajo y memoria en el servidor, sin embargo, esto solo lo deberíamos utilizar a nivel interno; esto es : para gestion.

Nuestros web, deberán seguir trabajando con el clásico MVC, para todo lo que sea presentaciones comerciales…¿porque?, porque si pasamos a utilizar JSON o XML para descargar datos, nuestros resultados SEO quedaran terriblemente afectado, ya que no facilitaremos los identificadores que los buscadores SEO utilizan para reconocer un sitio….

Conclusión

Tras todo esto, creo que la única conclusión posible es decir que el modelo MVC sigue siendo totalmente actual, y, lo único que deberemos hacer es añadir a nuestras vistas, la posibilidad de facilitar respuestas REST a la vez que siguen construyendo páginas HTML, y así, podremos enviar una u otra respuesta según interese…o nos pidan, claro.

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Desarrollo Web, Divulgacion, Javascript y etiquetada , , . Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.