Arquitectura
ADAS Core sigue una arquitectura de capas que separa claramente las responsabilidades entre los diferentes proyectos de la solución.
Capas principales
| Capa | Proyecto | Responsabilidad |
|---|---|---|
| Presentación | adas-core |
Exposición de la API HTTP, WebSocket Hubs, middleware y composición del grafo de dependencias. |
| Aplicación | adas-core.Application |
Casos de uso, servicios de aplicación, interfaces de repositorio, proveedores y customizaciones por centro. |
| Dominio | adas-core.Domain |
Entidades, modelos, enums, excepciones de negocio y utilidades compartidas. |
| Infraestructura | adas-core.Infrastructure |
Implementaciones de repositorios, acceso a MongoDB, mensajería RabbitMQ, caché Redis y mapeos de persistencia. |
| Autenticación | adas-core.Authentication |
Atributos, servicios de autoridad, gestión de usuarios y extensión de registro de autenticación. |
| Módulos | adas-core.module.* |
Funcionalidades específicas desacopladas (balizas, proxy de dispositivos, relés). |
Flujo de datos
- Los Controllers reciben las peticiones HTTP y delegan en los Services de aplicación.
- Los Services ejecutan la lógica de negocio y utilizan las interfaces de repositorio definidas en Application.
- Los Repositories concretos (en Infrastructure) acceden a MongoDB y publican eventos a través de RabbitMQ cuando es necesario.
- Los WebSocket Hubs (
UciHub) envían actualizaciones en tiempo real a los clientes conectados.
Dependencias entre proyectos
adas-core
├── adas-core.Application
│ ├── adas-core.Domain
│ └── (interfaces de infraestructura)
├── adas-core.Infrastructure
│ ├── adas-core.Application
│ └── adas-core.Domain
├── adas-core.Authentication
│ └── adas-core.Domain
├── adas-core.module.*
│ ├── adas-core.Application
│ └── adas-core.Domain
└── adas-core.Test
└── (todos los proyectos)