Skip to main content

Visión general de la arquitectura

Crono utiliza una arquitectura en capas construida sobre ASP.NET Core y Entity Framework Core. Las responsabilidades se dividen en capas y módulos bien definidos para garantizar una separación clara de responsabilidades.

Capa de dominio​

Define las entidades y objetos de valor que modelan el negocio. Las entidades viven en Crono.Nucleo y se mapean a la base de datos usando EF Core. La lógica de dominio se mantiene lo más cerca posible de las entidades.

Capa de datos​

El acceso a datos se realiza a través de CronoDbContexto, repositorios y paquetes de proveedores ubicados src/Crono.Datos.*. Cada proveedor incluye sus propias migraciones y servicios específicos del dialecto SQL, lo que permite que el núcleo de la aplicación sea agnóstico al motor de base de datos.

Capa de servicios​

Los servicios de aplicación orquestan las operaciones del dominio y encapsulan las reglas de negocio. Los servicios se registran mediante inyección de dependencias (Microsoft DI con Autofac) y exponen APIs asíncronas que son consumidas por controladores u otros servicios.

Modelos y validación​

Los ViewModels y DTOs están diseñados específicamente para la UI y el área administrativa. La validación de entradas se realiza mediante: DataAnnotations y FluentValidation, esto asegura que solo datos válidos lleguen a la capa de servicios.

Capa de UI​

Crono.Web aloja la aplicación ASP.NET Core MVC. Los controladores manejan las solicitudes HTTP, interactúan con los servicios y renderizan vistas Razor. El soporte adicional como Tag Helpers, filtros, y sistema de temas provienen de Crono.Web.Comun

Recursos web estáticos​

Los archivos estáticos como JavaScript, CSS e imágenes se encuentran en wwwroot. Durante el proceso de compilación, estos recursos se empaquetan y minifican. Los módulos pueden incluir su propio directorio wwwroot, y dichos recursos se copian a la aplicación en tiempo de ejecución.

Extensibilidad​

Las funcionalidades opcionales se empaquetan como módulos en src/Crono.Modulos. Un módulo puede aportar entidades de dominio, servicios, controladores, recursos de UI, esto permite un desarrollo y despliegue aislado y modular.

info

Los módulos de proveedor de base de datos suministran migraciones de EF Core y servicios específicos del proveedor, permitiendo que el nucleo de la aplicación permanezca independiente del proveedor de base de datos.