-
Course
- Core Tech
Domain-Driven Design in Practice
A descriptive, in-depth walk-through for applying Domain-Driven Design principles in practice.
What you'll learn
While Domain-Driven Design offers invaluable insights regarding developing enterprise-level software projects, it is often unclear how to apply them in practice. In this course, we'll go through the whole process of building an application from the very beginning using the DDD principles.
Table of contents
- Getting Started | 1m 20s
- Course Outline and Prerequisites | 2m 17s
- Area of Application for Domain-Driven Design | 3m 40s
- Why Domain-Driven Design? | 2m 29s
- Main Concepts of Domain-Driven Design | 3m 31s
- Domain-Driven Design Is Not Only About Writing Code | 2m 55s
- Onion Architecture and Domain Isolation | 4m 28s
- Modeling Best Practices | 1m 7s
- Domain-Driven Design and Unit Testing | 2m 45s
- The Problem Domain Introduction | 3m 23s
- Summary | 1m 31s
- Introduction | 30s
- Vocabulary Used | 1m 26s
- Problem Description | 54s
- Starting with Snack Machine | 3m 59s
- Recap: Starting with Snack Machine | 1m 20s
- Entities vs. Value Objects | 3m 15s
- How to Recognize a Value Object in Your Domain Model? | 2m 50s
- Entity Base Class | 1m 44s
- Demo: Entity Base Class | 3m 28s
- Recap: Entity Base Class | 32s
- Value Object Base Class | 1m 47s
- Recap: Value Object Base Class | 57s
- Value Objects vs. .NET Value Types | 1m 14s
- When to Write Unit Tests | 1m 47s
- Implementing the Money Class | 5m 30s
- Building up the Money Class | 4m 34s
- Implementing the Snack Machine Class | 5m 22s
- Recap: Implementing Money and Snack Machine | 1m 56s
- Summary | 3m 5s
- Introduction | 29s
- Application Services and UI in the Onion Architecture | 2m 18s
- Adding UI for the Snack Machine | 9m 29s
- Recap: Adding UI for the Snack Machine | 1m 45s
- Designing the Database for the Snack Machine | 3m 4s
- Introducing an ORM | 2m 45s
- ID Generation Strategies | 3m 21s
- Mapping Strategies | 1m 43s
- Adjusting the Domain Layer for the Use with ORM | 3m 49s
- Putting It All Together | 3m 5s
- Summary | 1m 28s
- Introduction | 24s
- Problem Description | 1m 13s
- Starting with the Implementation | 4m 43s
- Aggregates | 3m 52s
- How to Find Boundaries for Aggregates | 4m 41s
- Aggregate Root Base Class | 1m 42s
- Refactoring the Snack Machine Aggregate | 7m 18s
- Recap: Refactoring the Snack Machine Aggregate | 1m 24s
- Implementing Missing Requirements | 1m 53s
- Revealing a Hidden Requirement | 6m 4s
- Recap: Revealing a Hidden Requirement | 48s
- Summary | 1m 49s
- Introduction | 36s
- New Task: an ATM Model | 59s
- Bounded Contexts | 2m 25s
- Bounded Contexts and Sub-domains | 2m 2s
- Choosing Boundaries for Bounded Contexts | 3m 43s
- Drawing a Context Map | 1m 37s
- Types of Physical Isolation | 3m 45s
- Communication Between Bounded Contexts | 2m 2s
- Code Reuse Between Bounded Contexts | 4m 11s
- Implementing ATM Domain Logic | 5m 26s
- Adjusting the database | 1m 10s
- Adding UI | 4m 5s
- Summary | 1m 47s
- Introduction | 21s
- New Requirements | 56s
- Introducing a New Bounded Context | 2m 42s
- Implementation: the First Attempt | 2m 50s
- Domain Events | 2m 2s
- Introducing a Domain Event | 3m 24s
- Physical Delivery | 1m 3s
- Building up Management Bounded Context | 3m 9s
- Handling Domain Events with the Classic Approach | 5m 14s
- Recap: Classic Approach | 2m 32s
- A Better Approach to Handling Domain Events | 6m 43s
- Recap: a Better Approach | 1m 11s
- Using Domain Events to Communicate Between Microservices | 1m 1s
- Adding Interface for the Management Bounded Context | 3m 25s
- Summary | 2m 58s
- Introduction | 26s
- Always Valid vs. Not Always Valid | 3m 41s
- Factories | 1m 35s
- Domain Services vs. Application Services | 1m 49s
- Anemic Domain Model Anti-pattern | 1m 30s
- Fat Entities Anti-pattern | 1m 19s
- Repository Anti-patterns | 2m 45s
- Mechanical Approach to DDD | 1m 16s
- Further Enhancements | 1m 43s
- Module Summary | 1m 45s
- Resource List | 1m 24s
- Course Summary | 48s
About the author
Vladimir Khorikov is a Microsoft MVP and has been professionally involved in software development for more than 10 years.
More Courses by Vladimir