Architecture d'application
MVVM, MVC, Clean Architecture, Hexagonal Architecture, Onion Architecture, CQRS, Event Sourcing, Microservices, SOA, etc.
Clean architecture
La Clean Architecture est proposée en 2012 par Robert C. Martin (Uncle Bob) dans son article The Clean Architecture et développée dans son livre Clean Architecture: A Craftsman's Guide to Software Structure and Design
C'est un modèle d'architecture logicielle qui vise à créer des applications maintenables, testables et indépendantes des frameworks externes. Elle organise le code en couches concentriques, où les dépendances pointent vers l'intérieur, favorisant la séparation des préoccupations.
Principes
- Séparation des préoccupations : Chaque couche a une responsabilité claire.
- Dépendances vers l'intérieur : Les couches externes dépendent des couches internes, jamais l'inverse.
- Testabilité : Les règles métier sont isolées et faciles à tester.
- Indépendance des frameworks : Le code métier ne dépend pas des bibliothèques externes.
Les Couches de la Clean Architecture sont généralement organisées comme suit :
L'architecture est organisée en cercles concentriques :
- Entities (Business Domain) (Entités) - Noyau métier
- Use Cases (Cas d'usage) - Logique applicative
- Interface Adapters (Adaptateurs d'interface) - Conversion des données
- Frameworks & Drivers (Infrastructure) (Frameworks et Pilotes) - Détails d'implémentation
Flot
Liens utiles
- .Net 9 clean architecture template
- Understanding the difference between MVC architecture and Clean Architecture in ASP.NET
- Clean Architecture in .NET
- Clean Architecture example in Java
- Non mis à jour depuis longtemps : Clean Architecture template
Autres représentatios graphiques
Architecture hexagonale
Proposée en 2005 par Alistair Cockburn. Elle porte aussi le nom d'architecture en "Ports and Adapters". Elle se compose de plusieurs couches organisées autour du domaine métier.
- Le domaine métier (core) au centre, qui contient la logique métier et les règles de l'application.
- Les ports, qui définissent les interfaces pour interagir avec le domaine métier.
- Les adaptateurs, qui implémentent les ports pour interagir avec des systèmes externes (bases de données, interfaces utilisateur, services externes, etc.).








