Practical Domain-Driven Design and Event Sourcing Using .NET and C#
🛠️ Workshop Overview
Domain-Driven Design (DDD) and Event Sourcing are powerful paradigms for building complex, business-oriented applications. However, they are often considered overly complex or theoretical. This workshop focuses on the practical DDD and Event Sourcing application in .NET and C#. You’ll learn how to design systems that align with business needs, capture changes as events, and build scalable, maintainable applications. This workshop emphasizes real-world scenarios, hands-on implementation, and avoiding unnecessary complexity.
📚 Topics
- Introduction to Domain-Driven Design (DDD) and Event Sourcing
- Understanding the core principles of DDD: bounded contexts, aggregates, and ubiquitous language
- What is Event Sourcing, and why it’s a natural fit for DDD
- Benefits and challenges of using DDD and Event Sourcing
- Designing with Domain-Driven Design
- Identifying bounded contexts and domain boundaries
- Modeling aggregates, entities, and value objects
- Using ubiquitous language to align with business requirements
- Implementing Event Sourcing
- Capturing state changes as a sequence of events
- Designing event-sourced aggregates
- Storing and replaying events to rebuild state
- Building a Practical Event-Sourced System in .NET
- Structuring a .NET solution for DDD and Event Sourcing
- Using C# to implement event-sourced aggregates
- Persisting events with EventStore or other event stores
- Integrating DDD and Event Sourcing
- Handling commands and events in a DDD-based system
- Managing consistency and concurrency in event-sourced systems
- Projections: Building read models from events
- Hands-On Implementation
- Lab 1: Designing a bounded context and aggregates
- Lab 2: Implementing an event-sourced aggregate in C#
- Lab 3: Persisting and replaying events
- Lab 4: Building projections and read models
- Advanced Topics
- Versioning events and handling schema changes
- Integrating with external systems and APIs
- Best practices for testing and deploying DDD and Event Sourcing systems
🎓 Outcomes
- Understand the core principles of Domain-Driven Design and Event Sourcing
- Be able to design and implement a DDD-based system in .NET
- Know how to capture state changes as events and rebuild state from events
- Gain hands-on experience with event-sourced aggregates, projections, and read models
- Learn best practices for building scalable, maintainable, and business-aligned systems
🕒 Length: 2-3 days
📩 Contact Me
LinkedIn: https://www.linkedin.com/in/mehdihadeli