my-code-codex

Arquitetura N-Camadas

Domain

Não depende de outra

Contém a lógica central e regras de negócio puras da aplicação, totalmente independente de frameworks, infraestrutura ou tecnologia externa, facil de testar.

Só depende de .NET puro (System.*). Nada de EF, nada de HTTP, nada de infra, nada de usar libs externas.

Application

Depende da Domain

Coordena os casos de uso da aplicação, orquestrando o domínio e definindo interfaces para dependências externas, sem conhecer detalhes de implementação.

Recomendo usar FluentResults
X Não indico usar AutoMapper / Mapster
X Não indico usar MediatR

Infra

Depende da Domain e da Application

Implementa os contratos definidos nas camadas superiores, lidando com detalhes técnicos como persistência, serviços externos e infraestrutura.

Ferramentais Uteis

Presentation/API

Depende da Application

Expõe os recursos da aplicação ao mundo externo (ex: via HTTP), recebendo requisições, validando dados e delegando o processamento para a Application.

Ferramentas Uteis

Diagrama

Presentation/API

Controller
Request / Response DTO
Middleware
Infra

DbContext
Repositório (Implementação)
Unit of Work
Cache Service
Cached Repository (Decorator)
Serviço Externo
Event Publisher
Consumer (Kafka)
↓   ambos dependem   ↓
Application

Caso de Uso  ·  DTO  ·  Integration Event  ·  Interface de Event Publisher  ·  Interface de Serviço Externo  ·  IUnitOfWork  ·  ICacheService
↓   depende   ↓
Domain

Entidade  ·  Value Object  ·  Agregado (Aggregate Root)  ·  Domain Event  ·  Repositório (Interface)  ·  Domain Service  ·  Factory  ·  Specification