IT-professional

Applied Domain-Driven Design in .NET

What is Domain Driven Design (DDD) really about? How might Command Query Responsibility Segregation (CQRS) help us to build better software? Far from being esoteric concepts, they can be harnessed by everyday developers to create long-lasting, flexible solutions.

Course objectives

DDD and CQRS are gaining in popularity because they attack genuine challenges in software development. This course balances explaining important underlying theory with both design- and code-focused exercises, giving participants both understanding and new practical development skills.

Rather than teaching a framework, the course teaches a factoring and some ways to implement it, highlighting the key pitfalls to avoid along the way. During the course, a small application will gradually be built up from scratch. The course also includes coverage of testing, how to apply the insights from the course to existing systems and how to scale out a system developed using CQRS.

In the course we use the latest .NET 5 and C# 9.

Target audience

Developers and architects who want to learn more about applying Domain-Driven Design. 

Prerequisites

Good knowledge of C# and basic knowledge of NUnit is an advantage but not essential. 

Outline

  • Introduction to DDD

  • Value Objects

  • Aggregates

  • Invariants

  • Ubiquitous language

  • Bounded Contexts

  • Composition in the UI

  • Micro frontends

  • CQS and CQRS

  • Commands, Queries, Events

  • Event Storming

  • Event Modeling

  • Message busses / Mediators

  • Write site architecture

  • BDD Testing

  • Event Sourcing

  • Advanced aggregate design

  • The read side

  • Event distribution

  • Kafka

  • Event Versioning

  • DDD and legacy systems

  • Offline clients