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

  1. 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
  2. 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
  3. Implementing Event Sourcing
    • Capturing state changes as a sequence of events
    • Designing event-sourced aggregates
    • Storing and replaying events to rebuild state
  4. 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
  5. 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
  6. 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
  7. 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