An open API service indexing awesome lists of open source software.

https://github.com/jxareas/volo

An introductory hands-on guide to DDD principles using Abp Framework.
https://github.com/jxareas/volo

Last synced: 3 months ago
JSON representation

An introductory hands-on guide to DDD principles using Abp Framework.

Awesome Lists containing this project

README

          


DDD with Volo.Abp

![.NET](./assets/dotnet.png)

Table of Contents

This is a **free Domain Driven Design guide** wherein the **main concepts of DDD** will be explained.

The **main goal** of this workshop is to provide **software architects/developers/trainers/students/teachers** with a free practical guide to **study/teach DDD concepts**. It is based on the [Implementing Domain Driven Design Guide](https://docs.abp.io/en/abp/latest/Domain-Driven-Design-Implementation-Guide) you can find in the **ABP Framework Documents**.

In this **hands-on workshop** you will create an **IssueTracking application** following Domain Driven Design techniques.

The **sample application** that comes with this workshop is developed with the [ABP Framework](https://abp.io/), as this framework already has been written with Domain Driven Design principles in mind. It uses **Blazor** as UI framework and **SQL Server** as database provider.

While the workshop makes use of the ABP Framework infrastructure, **all the DDD core concepts, principles and patterns are applicable in any kind of solution**, even if it is not a .NET solution.

You will have **a good understanding of Domain Driven Design** when you finish this workshop.

### Start Domain Driven Design Workshop

[Click here](docs/get-started/get-started.md) to get started with the **free Domain Driven Design Workshop**. Enjoy and have fun!

### Exercises

| Exercise | Task |
| ------------------------------------------------------- | ------------------------------------------------------------------ |
| [Exercise 001](exercises/exercise-001-add-a-comment-to-an-issue.md) | Add a comment to an issue |
| [Exercise 002](exercises/exercise-002-responsibilities-of-a-well-designed-constructor.md) | Responsibilities of a well-designed constructor |
| [Exercise 003](exercises/exercise-003-entity-accessors-and-methods.md) | Entity Accessors and Method |
| [Exercise 004](exercises/exercise-004-business-logic-and-exceptions-in-the-entities.md) | Business Logic & Exceptions in the Entities |
| [Exercise 005](exercises/exercise-005-throwing-business-exception-with-code.md) | Throwing a Business Exception with Code |
| [Exercise 006](exercises/exercise-006-do-not-include-domain-logic-in-repositories.md) | Do Not Include Domain Logic in Repositories |
| [Exercise 007](exercises/exercise-007-implement-inactive-issue-filter-as-specification-class.md) | Implement Inactive Issue Filter as a Specification class |
| [Exercise 008](exercises/exercise-008-combining-specifications.md) | Combining Specifications |