This code-base is my interpretation of Command Query Responsibility Segregation, Domain-Driven Design, and Hexagonal/Ports and Adapter.
I've written what I've learned in the following blogs:
- This blog briefly describes the concepts: Implementing DDDomain models, ports & adapters and CQRS with C#
- This blog describes the folder structure, project structure, etc, that's been applied in this repo: DDDomain models, ports & adapters and CQRS reference architecture (C#)
- This blog describes the testing concepts: How to test a microservice.
The concepts of value-types, aggregates, and entities are the same in every project. Don't waste your time writing the code for these types, yourself. Instead, use packages that provide the base-classes.
This NuGet package contains those base-classes:
Install-Package DomainDrivenDesign.DomainObjects
Check out the source code of the project and read the documentation here.
Feel free to copy the code and use it for your own application. Please share your experiences when you do.
By cloning or forking this repository, by copying and using this code you are agreeing to the GNU GPL 3.0 license (license.txt) You do not have my permission to sell this (code).
I've written this code for anyone to use, to get inspiration and to learn new concepts. I learned a lot from other people's code, and this is my way of returning the favor. The day I'm not learning new things anymore is the day I quit. That means this code is not perfect. See anything conceptually incorrect? Please let me know. Please refer to the literature where these concepts are described. That way I can learn new things. Feel free to make a pull request, too!