# Component Dependencies — SlpModularCms.Api Dit document beschrijft de relaties en communicatiepatronen tussen de componenten. ## 1. Dependency Diagram ```mermaid graph TD API[Web API Shell] --> Core[Core Framework / Identity] API --> Avail[Availability Module] Avail --> Core subgraph "External Modules (Optional)" Mod[External Module DLL] -.-> Core end API -.-> Mod ``` ### Tekstuele Toelichting: - **Core Framework**: Is de centrale afhankelijkheid. Alle modules refereren naar de Core voor interfaces en Identity modellen. De Core mag zelf NOOIT refereren naar een module (Dependency Inversion). - **Web API Shell**: Heeft een harde referentie naar de Core en de Availability Module (voor de MVP stub). - **Modules**: Implementeren interfaces uit de Core. Worden door de API Shell geladen en geregistreerd in de DI container. ## 2. Communicatiepatronen - **In-Process DI**: Alle communicatie tussen modules en het framework verloopt via de Dependency Injection container van ASP.NET Core. - **Shared Domain Models**: Modules gebruiken de gedeelde `User` en `Role` modellen uit de Core voor autorisatie-checks. - **Events (Toekomstig)**: Gebruik van een `IMediator` of intern event-systeem voor ontkoppelde communicatie tussen modules. ## 3. Data Flow 1. **Client Request**: Komt binnen bij de API Shell. 2. **Availability Check**: Middleware roept `IAvailabilityService` (Availability Module) aan. 3. **Authentication**: Middleware valideert JWT via Identity logica (Core). 4. **Authorization**: Policy-based checks valideren de rol-hiërarchie (Core). 5. **Execution**: Het request wordt afgehandeld door de relevante Module Controller.