Domain-Driven Design com C# e .NET
- Nível: Avançado
- Módulos: 5
- Aulas: 29
- Tempo de leitura: 1h 57min
- Tecnologias: C#
- Preço: Gratuito
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.
- O que é DDD: história, motivação e quando usar (8 min)
- O que é Domain-Driven Design: Conceitos e Motivação (4 min)
- Linguagem Ubíqua: A Ponte Entre Negócio e Código (3 min)
- Bounded Contexts: Dividindo o Domínio em Fronteiras (4 min)
- Arquitetura em Camadas no DDD: Domain, Application, Infrastructure (4 min)
- Anemic Model vs Rich Domain Model: Escolhendo a Abordagem Certa (4 min)
- 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#.
- Entities: Identidade, Igualdade e Ciclo de Vida (3 min)
- Value Objects: Imutabilidade e Igualdade por Valor (4 min)
- Aggregates e Aggregate Roots: Fronteiras de Consistência (5 min)
- Invariantes de Domínio e Regras de Negócio no Aggregate (4 min)
- Factories e Repositories: Criação e Persistência no DDD (4 min)
- Domain Services: Lógica que Não Pertence a uma Entidade (4 min)
- 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.
- Domain Events: Comunicação Reativa no Domínio (3 min)
- Implementando Domain Events com MediatR em C# (4 min)
- Application Services, Commands e Queries (4 min)
- Padrão Mediator com MediatR: Integrando Tudo (4 min)
- Outbox Pattern: Garantindo Entrega Confiável de Eventos (4 min)
- 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.
- Implementando Repositories com Entity Framework Core (4 min)
- Unit of Work: Gerenciando Transações no DDD (4 min)
- CQRS com Read Models: Otimizando Consultas (4 min)
- 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.
- Projeto Final: Visão Geral do Sistema de Pedidos com DDD (4 min)
- Implementando o Aggregate de Pedido Completo (5 min)
- Comunicação Entre Bounded Contexts via Integration Events (3 min)
- Finalizando o Projeto: API, Testes e Deploy (3 min)
- Revisão Final: Padrões DDD e Boas Práticas (5 min)