"La arquitectura limpia consiste en diseñar sistemas que sean fáciles de entender, fáciles de cambiar y fáciles de probar."
--Robert C. Martin (Uncle Bob)
En el desarrollo de software, la arquitectura de tu aplicación debe ser la protagonista, mientras que los Frameworks deben servir como simples herramientas. Este artículo narra un recorrido a través de varios Frameworks contemporáneos que facilitan la construcción de aplicaciones web: Razor, MVC, Blazor, Angular y React. La meta es demostrar cómo una arquitectura propia y bien definida permite utilizar estos Frameworks sin perder el control de tu aplicación, evidenciando que lo realmente importante es la arquitectura y no el Framework en sí.
Cuando controlas tu arquitectura, eres el dueño de tu aplicación. En contraste, si adoptas la arquitectura del Framework, el Framework se convierte en el controlador de tu aplicación. Por ejemplo, si necesitas actualizar el Framework para implementar una funcionalidad requerida, y tu aplicación depende de su arquitectura, la actualización podría proporcionar la funcionalidad deseada, pero también puede hacer que partes de tu aplicación ya no funcionen debido a los cambios en el Framework. Este es el riesgo de dejar que el Framework controle tu aplicación.
Este artículo no pretende enseñar cómo construir aplicaciones web con los Frameworks mencionados, pero destaca algunos de sus aspectos clave. La comparación entre los distintos Frameworks se realiza construyendo la misma aplicación en cada uno de ellos, permitiendo así una evaluación justa y precisa. La aplicación en cuestión es una tienda de videos, o más específicamente, la implementación de algunos de sus casos de uso.
A continuación, los prototipos de las pantallas de la aplicación a contruir:
Es decir, el usuario selecciona la opción "Other". A partir de ahí, existen dos escenarios:
- Si el usuario existe en el sistema, se le muestra una lista de videos y, tras seleccionar uno, se le presenta el detalle del mismo.
- Si el usuario no existe, se le presentan varias pantallas hasta que puede acceder a la lista de videos.
Arquitectura de la Aplicación
La aplicación sigue una arquitectura limpia, reflejada en el siguiente diagrama:
Componentes de la Arquitectura:
- CriticalBusinessRules: Contiene entidades y objetos que abstraen la información y las reglas del negocio, independientemente de si se automatiza o no.
- AppBusinessRules: Son entidades y objetos derivados del análisis de los casos de uso necesarios para construir la aplicación.
- FileSystemDB: Este componente guarda la información en el sistema de archivos, posteriormente se puede reemplazar por un sistema de base de datos, demostrando así la flexibilidad de la arquitectura.
- Presenters: Facilitan las pruebas y aseguran que las vistas se concentren únicamente en su función principal: mostrar la información al usuario y capturar datos.
- Views: Interactúan con el usuario, mostrando y capturando información. Este es el componente que se evaluará en los diferentes Frameworks.
Inicio del Viaje
Comenzaremos el recorrido con el Framework Razor, explorando cómo una arquitectura bien definida permite utilizar cualquier Framework como una herramienta más, sin comprometer la integridad y el control de la aplicación.
Este enfoque te permitirá dominar verdaderamente tu desarrollo, asegurando que el Framework se ajuste a tu aplicación y no al revés. ¡Acompáñame en este fascinante viaje y descubre el verdadero poder de una arquitectura limpia!
Para iniciar con Razor da click aquí o utiliza los enlaces de abajo para navegar por las diferentes secciones de este artículo.