Ce template est une application .NET 8.0 utilisant C# 12.0. Il est structuré en plusieurs couches, notamment l'infrastructure, le domaine et les tests. L'objectif principal de ce template est de fournir une architecture modulaire et testable pour une application de gestion utilisant l'architecture Clean Architecture.
Pour installer ce template localement depuis le dépôt:
dotnet new install .Ou pour installer depuis NuGet (une fois publié):
dotnet new install CleanArchitecture.TemplatePour créer un nouveau projet à partir de ce template:
dotnet new clean-arch -n MonProjetCela créera un nouveau projet avec la structure suivante:
MonProjet.Domain- Contient les entités du domaine et les interfacesMonProjet.Application- Contient les cas d'utilisation et la logique métierInfrastructure- Contient les implémentations des dépôts et le contexte de la base de donnéesWebApi- API Web ASP.NET CoreApplication.UnitTests- Tests unitaires
Tous les namespaces seront automatiquement configurés avec le nom de votre projet (ex: MonProjet.Domain.Entities, MonProjet.Application.UseCases, etc.).
-
src/TemplateCleanArchi/Domain : Contient les entités du domaine et les interfaces. Les entités du domaine doivent être pures, c'est-à-dire qu'elles ne doivent pas avoir d'effets de bord et doivent être déterministes.
Entities/Product.cs: Exemple d'entité du domaine.Interfaces/IProductRepository.cs: Interface pour le dépôt de produits.
-
src/TemplateCleanArchi/Application : Contient les cas d'utilisation et la logique métier.
UseCases/product/: Use Cases pour les opérations sur les produits (approche DDD avec pattern...UseCase(...).Execute()).DTOs/: Objets de transfert de données.Exceptions/: Exceptions personnalisées.
-
src/Infrastructure : Contient les implémentations des dépôts et le contexte de la base de données.
AppDbContext.cs: Classe représentant le contexte de la base de données.Repositories/ProductRepository.cs: Implémentation du dépôt pour les produits.
-
WebApi : API Web ASP.NET Core avec injection de dépendance configurée.
-
src/Tests : Contient les projets de tests.
Application.UnitTests: Tests unitaires pour la couche application avec mocks.Application.IntegrationTests: Tests d'intégration pour vérifier l'interaction entre les composants.
- Domain-Driven Design (DDD) : Guide complet sur l'approche DDD utilisée dans ce template
- Test-Driven Development (TDD) : Guide pratique du TDD avec exemples concrets
- Use Cases : Documentation détaillée sur le pattern UseCase
- .NET 8.0 SDK
- Visual Studio 2022 ou VS Code
Ce template utilise une approche orientée cas d'utilisation (Use Case) plutôt que CQRS. Chaque action métier est représentée par un UseCase qui implémente le pattern ...UseCase(...).Execute().
// Créer un produit
var createProductUseCase = new CreateProductUseCase(productRepository);
var request = new CreateProductRequest("iPhone 15", 999.99m);
var productId = await createProductUseCase.Execute(request);
// Récupérer un produit
var getProductUseCase = new GetProductUseCase(productRepository);
var product = await getProductUseCase.Execute(productId);Voir UseCases/README.md pour plus de détails.
Pour une compréhension approfondie de l'approche DDD et TDD, consultez :
- Clonez le dépôt :
git clone https://github.com/Thony-Crz/Template-Clean-Archi.git-
Accédez au répertoire du projet
-
Restaurez les packages NuGet :
dotnet restore- Compilez le projet :
dotnet buildLe projet inclut des exemples de tests unitaires et d'intégration.
dotnet testdotnet test src/Tests/Application.UnitTests/dotnet test src/Tests/Application.IntegrationTests/Pour en savoir plus sur l'approche TDD utilisée, consultez le Guide TDD.
Pour désinstaller le template:
dotnet new uninstall CleanArchitecture.TemplateOu si installé depuis un dossier local:
dotnet new uninstall /chemin/vers/le/template- Configurer l'injection de dépendance pour les services et les dépôts.
- Implémenter les méthodes du repository.
- Ajouter Entity Framework Core pour la persistance des données.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.