Skip to content

Latest commit

 

History

History
161 lines (106 loc) · 5.09 KB

File metadata and controls

161 lines (106 loc) · 5.09 KB

Template Clean Architecture .NET 8.0

Description

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.

Installation du Template

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.Template

Utilisation du Template

Pour créer un nouveau projet à partir de ce template:

dotnet new clean-arch -n MonProjet

Cela créera un nouveau projet avec la structure suivante:

  • MonProjet.Domain - Contient les entités du domaine et les interfaces
  • MonProjet.Application - Contient les cas d'utilisation et la logique métier
  • Infrastructure - Contient les implémentations des dépôts et le contexte de la base de données
  • WebApi - API Web ASP.NET Core
  • Application.UnitTests - Tests unitaires

Tous les namespaces seront automatiquement configurés avec le nom de votre projet (ex: MonProjet.Domain.Entities, MonProjet.Application.UseCases, etc.).

Structure du Projet

  • 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.

Documentation

Prérequis

  • .NET 8.0 SDK
  • Visual Studio 2022 ou VS Code

Approche Use Case (DDD)

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().

Exemple

// 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 :

Installation (pour développement du template)

  1. Clonez le dépôt :
git clone https://github.com/Thony-Crz/Template-Clean-Archi.git
  1. Accédez au répertoire du projet

  2. Restaurez les packages NuGet :

dotnet restore
  1. Compilez le projet :
dotnet build

Tests

Le projet inclut des exemples de tests unitaires et d'intégration.

Exécuter tous les tests

dotnet test

Exécuter uniquement les tests unitaires

dotnet test src/Tests/Application.UnitTests/

Exécuter uniquement les tests d'intégration

dotnet test src/Tests/Application.IntegrationTests/

Pour en savoir plus sur l'approche TDD utilisée, consultez le Guide TDD.

Désinstallation du Template

Pour désinstaller le template:

dotnet new uninstall CleanArchitecture.Template

Ou si installé depuis un dossier local:

dotnet new uninstall /chemin/vers/le/template

Ce qu'il reste à faire

  • 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.

Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.