En esta ocasión vamos a hablar de las arquitecturas de software tan mencionadas cuando empezamos a adentrarnos en el mundo de la programación, en concreto vamos a hacer una introducción de MVC y MVVM, sus ventajas, desventajas y las diferencias que existen entre ellas.
Pero primero, ¿Qué es una arquitectura de software?
Una definición simple sería que la arquitectura de software es la guía o patrón que vamos a utilizar en el desarrollo de nuestro programa.
Muchas veces a esto no se le da excesiva importancia, pero definir al principio del desarrollo, la arquitectura con la que vamos a trabajar, puede ahorrarnos muchos dolores de cabeza en el futuro.
Esto es así porque, a medida que nuestro software empiece a crecer y hacerse más complejo, el mantenimiento del código será mucho más sencillo si hemos desarrollado una buena estructura antes de empezar a programar.
Dos de las arquitecturas más conocidas son MVC y MVVM, pero veamos cómo funciona cada una.
MVC (Modelo -Vista -Controlador)
En este patrón de diseño las aplicaciones se separan en tres capas:
- Modelo : contiene la información de los datos. Es una representación.
- Vista : es la interfaz de usuario, es decir, con lo que interactúa el usuario.
- Controlador : es la conexión entre el modelo y la vista. Cuando se produce un cambio, informa a la vista o al modelo de éstos.
MVVM (Modelo – Vista – Vista-Modelo)
Aquí volvemos a tener tres capas, dos que ya hemos visto (Modelo y Vista) y, en este caso, se sustituye el controlador por Vista-Modelo o Modelo de Vista (ViewModel).
A diferencia del MVC, la vista tiene una referencia al modelo de vista, pero el vista-modelo no sabe nada de la vista.
Aunque esta estructura permite que varias vistas pueden compartir el mismo vista-modelo, es aconsejable tener una relación de 1-1 (una vista por un vista-modelo), porque puede dar pie a que, un único vista-modelo, contenga demasiado código.
Aparte de esto, la vista tampoco recibe información del modelo, ya que el vista-modelo hace la función de proveedor de datos.
Diferencias entre MVC y MVVM
MVC | MVVM |
El punto de entrada a la aplicación es el controlador. | El punto de entrada se realiza desde la vista. |
La vista no tiene referencia del Controlador. | La vista no tiene referencia del ViewModel. |
Presenta un acoplamiento entre los componentes muy bajo. | Los componentes están totalmente desacoplados. |
Ventajas y desventajas de MVC
Ventajas
- El desarrollo de los distintos componentes se puede realizar de manera simultánea entre varios desarrolladores.
- Funciona muy bien para aplicaciones web.
- El soporte es más sencillo, orientado a un nuevo tipo de clientes.
- Alta cohesión: permite la agrupación de lógica de acciones relacionadas en un controlador, lo que lo hace más fácil de leer y reutilizar
Desventajas
- La curva de aprendizaje para nuevos desarrolladores es un poco superior a los otros modelos que son más simples.
- Tener varias capas nos incrementa la complejidad del sistema.
- La navegación por el código puede ser compleja al disponer de más componentes, lo que se traduce en un mayor número de archivos o unidades.
Ventajas y desventajas de MVVM
Ventajas
- La lógica de negocio está desacoplada de la interfaz de usuario.
- Es más fácil de mantener y probar. Puedes hacer pruebas unitarias para el modelo y para vista-modelo, sin necesidad de hacer referencia a la vista.
- Los componentes pueden ser reutilizados
- El mantenimiento de los sistemas es simplificado.
Desventajas
- La curva de aprendizaje para nuevos desarrolladores es un poco superior a los otros modelos que son más simples.
- La distribución de componentes nos obliga a la creación y mantenimiento de un mayor número de ficheros.
- Debes de adaptarte a una estructura predefinida y eso incrementa la complejidad del sistema.
Conclusión
Como puedes observar, ambos son patrones de diseños e incluso uno apareció por parte de Microsoft como evolución del anterior en el año 2004 para su proyecto WPF.
Así pues, si queremos desarrollar un software que vaya a estar implementando cambios continuamente por diferentes personas, quizás sería más aconsejable irnos hacia el patrón MVVM, ya que al estar más desacoplado puede ser más sencillo el hacer cambios en una capa sin que afecten excesivamente al resto.
En nuestro caso nos sentimos más cómodos con el Patrón MVC ya que lo tenemos más asimilado con nuestra forma de programar y con los componentes que utilizamos y para ello hacemos uso de un framework llamado Delphi MVC Framework.
En próximos artículos seguiremos hablando de estas arquitecturas y como podemos implementarlas en nuestros proyectos, en nuestro caso, con Delphi.
Nuestros cursos
Actualmente contamos con dos curso de DMVC Framework, en uno mostramos todo lo que necesitas saber del uso de este framework y profundizamos aún más en el patrón MVC, y en el segundo curso, mostramos un caso práctico de la creación de un pequeño CRM donde podemos guardar nuestros contactos y las llamadas que les realizamos.
Si quieres apuntarte a estos cursos y muchos más de Delphi, puedes hacerlo desde nuestra plataforma NoSoloDelphi.
Deja una respuesta