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
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… ¿Por qué va a quedar obsoleto?
La estructura MVC nace cuando internet no es un factor importante en la vida empresarial. Nuestras aplicaciones corrían 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 única adaptación 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 ….
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.
Relacionado
Descubre más desde Recursos para formacion
Suscríbete y recibe las últimas entradas en tu correo electrónico.