Documents the per-project layout under src/ (Abstract, Server, Org, Api, Blogs, Web, Org.Tests) as one of the two remaining items of Jalon 0 in ROADMAP.md: 'Decoupage Yavsc.Org vs Yavsc.Server vs Yavsc.Api clarifie dans l'Architecture' The page is referenced from the new doc/README.md index, and will also be linked from CONTRIBUTING.md in the next commit.
5 KiB
5 KiB
Découpage des projets .NET
Récapitulatif : Le code est réparti en sept projets .NET sous
src/, organisés par rôle : domaine partagé, bibliothèque métier, front web utilisateur-facing, API REST, blog, front admin, et tests. Détail dans cette page, racine de l'architecture : Architecture.md.
Vue d'ensemble
┌──────────────────────────────┐
│ Yavsc.Abstract (lib) │
│ Modèles du domaine partagés │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ Yavsc.Server (lib) │
│ Helpers, EF, services │
└──────┬───────────────┬───────┘
│ │
┌─────────────▼──┐ ┌───────▼────────────┐
│ Yavsc.Org (web)│ │ Yavsc.Api (web) │
│ Front web │ │ API REST JSON │
│ + Identity- │ │ JwtBearer │
│ Server │ │ │
│ + Razor views │ └────────────────────┘
└────────────────┘
│
┌──────▼────────────────────────────┐
│ Yavsc.Blogs (web) │
│ Front web spécifique au blog │
│ (consomme Yavsc.Server) │
└───────────────────────────────────┘
Clients externes :
- Yavsc.Web : front admin / expérimentation, JwtBearer.
- PostIt : client desktop Avalonia (cf. postit-oidc.md).
Par projet
| Projet | Type SDK | Rôle |
|---|---|---|
Yavsc.Abstract |
Library | Modèles du domaine partagés (entités, value objects, enums). Pas de dépendance framework. |
Yavsc.Server |
Library | Bibliothèque métier : DbContext, helpers PayPal/SMTP, services métier, modèles billing/blog. |
Yavsc.Org |
ASP.NET Web | Front web utilisateur-facing : Razor views, IdentityServer8 (OP), AccountController, Razor. |
Yavsc.Api |
ASP.NET Web | API REST JSON consommée par les clients externes (PostIt, …). JwtBearer auth. |
Yavsc.Blogs |
ASP.NET Web | Sous-domaine front web spécifique au blog, autonome mais consomme Yavsc.Server. |
Yavsc.Web |
ASP.NET Web | Front admin / expérimentations, JwtBearer, référence Yavsc.Abstract et Yavsc.Server. |
Yavsc.Org.Tests |
Test (xUnit) | Tests d'isolation du front web (Yavsc.Org) — fakes, controller tests. |
Pourquoi ce découpage
Yavsc.Abstractséparé deYavsc.Server: permet aux clients externes (PostIt — projet Avalonia soussrc/PostIt/) de partager les modèles DTO sans embarquer Entity Framework ni ASP.NET Core.Yavsc.Serverest une library, pas un web host : on peut tester les services sans démarrer Kestrel ; plusieurs fronts (Org, Api, Blogs) consomment les mêmes helpers sans dupliquer.Yavsc.Apiséparé deYavsc.Org: l'API REST est destinée aux clients headless (PostIt, intégrations tierces) ; elle n'a pas besoin des vues Razor ni d'IdentityServer. Inversement, le front web peut servir ses propres pages serveur sans exposer une API REST.Yavsc.Blogsséparé : le blog a son propre cycle de vie (déploiement, modèle de contenu) tout en réutilisant le contexte EF deYavsc.Server.
Conséquences pratiques
- Une modification d'un modèle DDD dans
Yavsc.Abstractpeut casser plusieurs fronts à la fois (Org, Api, Blogs, Web). C'est attendu ; les tests deYavsc.Org.Testsdoivent suivre. - Ajouter une route API dans
Yavsc.Apin'implique pas de recompilerYavsc.Org(et inversement). PostIt(soussrc/PostIt/) ne référence queYavsc.Abstract; il n'embarque ni EF ni ASP.NET Core.
Voir aussi
- Architecture.md — racine.
- postit-oidc.md — PostIt consomme
Yavsc.Apivia OIDC.