Destino Dev

Cursos

Domain-Driven Design com C# e .NET

Código do curso: github.com/johnpires/domain-driven-design-csharp-dotnet

Domine a arte de modelar software complexo utilizando Domain-Driven Design (DDD) com C# e .NET. Este curso avançado apresenta os conceitos fundamentais e padrões táticos do DDD — como Entities, Value Objects, Aggregates, Domain Events e Repositories — aplicados diretamente no ecossistema .NET, utilizando C# moderno e boas práticas de arquitetura.

Ao longo do curso, você aprenderá a estruturar soluções orientadas ao domínio, separando responsabilidades em camadas bem definidas (Domain, Application, Infrastructure, Presentation), implementando a linguagem ubíqua com seus times e criando um modelo rico que reflete com precisão as regras de negócio. Você também explorará como integrar DDD com padrões como CQRS, Specification Pattern e Domain Events para construir sistemas robustos e evolutivos.

O curso é voltado para desenvolvedores .NET experientes que desejam elevar a qualidade arquitetural de seus projetos, reduzir acoplamento e criar código que realmente conversa com o negócio.

Conteúdo do curso

Módulo 1: Fundamentos do DDD e Arquitetura em Camadas

Introdução ao Domain-Driven Design, seus princípios fundamentais, linguagem ubíqua, bounded contexts e como estruturar uma solução .NET seguindo a arquitetura em camadas do DDD.

  1. O que é DDD: história, motivação e quando usar (8 min)
  2. O que é Domain-Driven Design: Conceitos e Motivação (4 min)
  3. Linguagem Ubíqua: A Ponte Entre Negócio e Código (3 min)
  4. Bounded Contexts: Dividindo o Domínio em Fronteiras (4 min)
  5. Arquitetura em Camadas no DDD: Domain, Application, Infrastructure (4 min)
  6. Anemic Model vs Rich Domain Model: Escolhendo a Abordagem Certa (4 min)
  7. Configurando a Solução .NET com DDD na Prática (3 min)

Módulo 2: Entities, Value Objects e Aggregates

Os blocos de construção táticos do DDD: como modelar Entities com identidade, Value Objects imutáveis, e Aggregates como fronteiras de consistência transacional em C#.

  1. Entities: Identidade, Igualdade e Ciclo de Vida (3 min)
  2. Value Objects: Imutabilidade e Igualdade por Valor (4 min)
  3. Aggregates e Aggregate Roots: Fronteiras de Consistência (5 min)
  4. Invariantes de Domínio e Regras de Negócio no Aggregate (4 min)
  5. Factories e Repositories: Criação e Persistência no DDD (4 min)
  6. Domain Services: Lógica que Não Pertence a uma Entidade (4 min)
  7. Testando o Domínio: Unit Tests para Aggregates e Value Objects (3 min)

Módulo 3: Domain Events e Application Services

Como usar Domain Events para comunicação intra-domínio, Application Services para orquestrar casos de uso, e o padrão Mediator com MediatR para desacoplar componentes.

  1. Domain Events: Comunicação Reativa no Domínio (3 min)
  2. Implementando Domain Events com MediatR em C# (4 min)
  3. Application Services, Commands e Queries (4 min)
  4. Padrão Mediator com MediatR: Integrando Tudo (4 min)
  5. Outbox Pattern: Garantindo Entrega Confiável de Eventos (4 min)
  6. Anti-Corruption Layer e Integração com Sistemas Externos (5 min)

Módulo 4: Infraestrutura, Persistência e Integração

Implementando a camada de infraestrutura com EF Core, Repositories concretos, Unit of Work, Outbox Pattern para eventos confiáveis e Anti-Corruption Layer para integrações externas.

  1. Implementando Repositories com Entity Framework Core (4 min)
  2. Unit of Work: Gerenciando Transações no DDD (4 min)
  3. CQRS com Read Models: Otimizando Consultas (4 min)
  4. Testes de Integração com EF Core InMemory e WebApplicationFactory (4 min)

Módulo 5: Projeto Final: Sistema de Pedidos com DDD

Construção de um sistema de pedidos completo aplicando todos os conceitos do DDD: múltiplos bounded contexts, eventos de domínio, CQRS básico e integração entre contextos.

  1. Projeto Final: Visão Geral do Sistema de Pedidos com DDD (4 min)
  2. Implementando o Aggregate de Pedido Completo (5 min)
  3. Comunicação Entre Bounded Contexts via Integration Events (3 min)
  4. Finalizando o Projeto: API, Testes e Deploy (3 min)
  5. Revisão Final: Padrões DDD e Boas Práticas (5 min)