The goal of this project is create the building blocks to follow DDD principles and Clean Architecture in .NET
- You will need the latest Visual Studio 2022 and the latest .NET Core SDK (at least .NET 7 SDK)
- All the projects library are contained in JordiAragon.SharedKernel.sln solution file.
- MediatR
- AutoMapper
- Autofac
- MassTransit
- FastEndpoints
- Ardalis.Result
- Ardalis.Specification
- Ardalis.SmartEnums
- Ardalis.GuardClauses
- FluentValidator
- Serilog
- Quartz
- Refit
- EasyCaching
- Volo.Abp.Guids Generator
- StyleCop & SonarAnalyzer
SharedKernel and Contracts
- Dependency Injection. Allow auto register services using markup interfaces.
Domain and Contracts
- Common contracts and base implementations to flow DDD principles like: DomainEvents, ApplicationEvents, ValueObjects, Entities, Repository, BusinessRulesValidations and other DDD building blocks.
Application and Contracts
- Application common contracts and base implementation for EventBus, UnitOfWork and CQRS...
- Common MediatR pipelines implementation
- IntegrationMessages contacts and base implementation to be used in EventBus
- Common EventBus implementation using MassTransit
Infrastructure and Contracts
- EntityFramework base implementation to allow auditing and outbox to dispatch domain events notifications.
- BaseCachedRepository is done using ICacheService abstraction.
- MassTransitEventBus base implementation.
Presentation and Contracts
- HttpRestfulApi building blocks. Like BaseApiController, ExceptionMiddleware, CurrentUserService and ResponseBuilder for ProblemDetails.
Special thanks to all these authors for sharing their knowledge and expertise:
- Ardalis: Clean Architecture
- Jason Taylor: Clean Architecture
- Vaughn Vernon: Implementing Domain-Driven Design (book)
- Vaughn Vernon: Domain-Driven Design Destilado (book)
- Alexey Zimarev: Hands-on Domain-Driven Design (book)
- Microsoft eShopOnContainers
- Microsoft eShopOnWeb
- Kamil Grzybek: Sample .NET Core REST API CQRS
- Kamil Grzybek: Modular Monolith With DDD
- Oskar Dudycz: EventSourcing .NET
- Explore DDD: Mauro Servienti - Talk Session: Welcome to the (State) Machine
- Explore DDD: Mauro Servienti - Talk Session: All Our Aggregates Are Wrong
- NDC Oslo: Udi Dahan - Talk Session: CQRS pitfalls and patterns
- Vladimir Khorikov: DDD in a nutshell
- Diego Martin: SunnyAttic Software Videos
- Jimmy Bogard: Vertical Slice Architecture
- CodeOpinion: Youtube Channel
- Amichai Mantinband: Youtube Channel
- Milan Jovanović: Youtube Channel
The SharedKernel Project was developed by Jordi Aragón Zaragoza
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.