Initial commit with inital CMS
This commit is contained in:
+30
@@ -0,0 +1,30 @@
|
||||
# Business Rules — Unit 04: API Shell & Integration
|
||||
|
||||
Dit document beschrijft de integratie-regels en de orkestratie van de modules.
|
||||
|
||||
## 1. Module Discovery (BR-SHELL-01)
|
||||
|
||||
- **Scanning**: De API Shell scant bij het opstarten naar alle geladen assemblies die voldoen aan het patroon `SlpModularCms.Modules.*`.
|
||||
- **Interface**: Alleen klassen die `IModule` implementeren worden geregistreerd.
|
||||
- **Validatie**: Indien een module niet voldoet aan de eisen (bijv. ontbrekende naam of versie), wordt dit gelogd als een fout en wordt de module niet geladen.
|
||||
|
||||
## 2. Dependency Injection & Pipeline (BR-SHELL-02)
|
||||
|
||||
- **Gecentraliseerde Registratie**: De `ModuleOrchestrator` roept `RegisterServices` aan op alle gevonden modules voordat de applicatie start.
|
||||
- **Middleware Pipeline**: De `ModuleOrchestrator` roept `UseModule` aan om modules de kans te geven hun middleware te registreren in de HTTP pipeline.
|
||||
- **Core First**: Core services (Identity, Logging) worden altijd geregistreerd vóórdat de modules aan de beurt zijn.
|
||||
|
||||
## 3. API Versioning & Routing (BR-SHELL-03)
|
||||
|
||||
- **Gecentraliseerde Prefix**: Alle API endpoints krijgen de prefix `/api/v1/`.
|
||||
- **Afdwingen**: Dit wordt globaal geconfigureerd in de Shell zodat individuele modules hier geen rekening mee hoeven te houden in hun route attributen.
|
||||
|
||||
## 4. Swagger Documentatie (BR-SHELL-04)
|
||||
|
||||
- **Tagging**: De Shell groepeert endpoints automatisch per module op basis van de module naam die in de `IModule` interface is opgegeven.
|
||||
- **Security**: Swagger wordt geconfigureerd om JWT Bearer tokens te ondersteunen voor het testen van beveiligde endpoints.
|
||||
|
||||
## 5. Cross-Module Communicatie (BR-SHELL-05)
|
||||
|
||||
- **Ontkoppeling**: Modules communiceren niet direct met elkaar via projectreferenties.
|
||||
- **Interfaces**: Communicatie verloopt uitsluitend via interfaces die gedefinieerd zijn in `SlpModularCms.Core`.
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
# Business Logic Model — Unit 04: API Shell & Integration
|
||||
|
||||
Dit document beschrijft de startup flow en de orkestratie logica van de shell.
|
||||
|
||||
## 1. Startup Orkestratie Flow
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Program as Program.cs
|
||||
participant Orc as ModuleOrchestrator
|
||||
participant Core as Core Services
|
||||
participant Mod as Modules (IModule)
|
||||
|
||||
Program->>Orc: DiscoverModules()
|
||||
Orc-->>Program: List<IModule>
|
||||
|
||||
Program->>Core: RegisterCoreServices(Identity, DB, JWT)
|
||||
|
||||
loop Per Module
|
||||
Program->>Mod: RegisterServices(IServiceCollection)
|
||||
end
|
||||
|
||||
Program->>Program: Build App
|
||||
|
||||
Program->>Program: UseExceptionHandler()
|
||||
|
||||
loop Per Module
|
||||
Program->>Mod: UseModule(IApplicationBuilder)
|
||||
end
|
||||
|
||||
Program->>Program: UseAuthentication/Authorization()
|
||||
Program->>Program: MapControllers()
|
||||
Program->>Program: Run()
|
||||
```
|
||||
|
||||
## 2. API Versioning Logic
|
||||
|
||||
De versioning wordt toegepast via een globale `RoutePrefix` of door gebruik te maken van de `Microsoft.AspNetCore.Mvc.Versioning` library.
|
||||
- **Base Path**: `/api/v1`
|
||||
- **Fallback**: Verzoeken zonder versie-indicator in het pad worden standaard naar v1 gerouteerd.
|
||||
|
||||
## 3. Dynamische Swagger Groepering
|
||||
|
||||
1. Swagger scan de controllers van alle geladen assemblies.
|
||||
2. Voor elke controller wordt gekeken naar de assembly waarin deze is gedefinieerd.
|
||||
3. Indien de assembly toebehoort aan een module (bijv. `SlpModularCms.Modules.Availability`), wordt de module naam als 'Tag' toegevoegd aan alle endpoints van die controller.
|
||||
4. Swagger UI toont de endpoints gegroepeerd onder deze tags.
|
||||
Reference in New Issue
Block a user