Aula 20 - Projeto Capstone: Aplicação .NET 8 Enterprise Autônoma 🏆
Objetivo Pedagógico
Objetivo: Construção de uma aplicação corporativa completa em .NET 8, com Clean Architecture, CQRS, Minimal APIs, EF Core 8, Testcontainers e documentação OpenAPI.
📑 1. Fundamentos Teóricos & Análise Técnica
O Projeto Capstone da Especialização em Sistemas com C# .NET representa a culminação das práticas corporativas mais exigidas no mercado de trabalho de tecnologia financeira e empresarial. O desafio consiste em projetar e implementar uma Plataforma de Gestão de Ordens de Compra e Liquidação de Ativos.
O projeto avalia as seguintes implementações de arquitetura: 1. Estrutura Clean Architecture com 4 Camadas: Domain (Entidades e Regras de Negócio Puras), Application (Comandos, Queries e DTOs via MediatR), Infrastructure (EF Core 8 e Provedores Externos) e Api (Minimal APIs com autenticação JWT). 2. Pipeline Centralizado com Behaviors: Validação automática de payloads com FluentValidation antes de atingir os handlers. 3. Persistência com EF Core 8: Transações ACID, soft delete com filtros globais de consulta (HasQueryFilter) e auditoria automatizada. 4. Suíte Completa de Testes: Testes de unidade com xUnit e testes de integração com banco de dados real via Testcontainers.
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph TD
Client["Client / API Gateway"] --> API["Minimal APIs (.NET 8)"]
API --> MediatR["MediatR Pipeline (Validation & Logging)"]
MediatR --> App["Application Layer (Commands & Queries)"]
App --> Domain["Domain Layer (Entities & Aggregates)"]
App --> Infra["Infrastructure Layer (EF Core 8)"]
Infra --> DB["PostgreSQL Database"]
style Client fill:#e1f5fe,stroke:#01579b
style API fill:#fff3e0,stroke:#e65100
style App fill:#e8f5e9,stroke:#2e7d32
style Domain fill:#f3e5f5,stroke:#7b1fa2 🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Arquitetura Corporativa Desacoplada: A camada de Domínio desconhece o banco de dados e a interface web. - Resiliência a Falhas: Implementação de retries automáticos com a biblioteca Polly em chamadas de I/O externas. - Filtros Globais de Dados: Implementação de Soft Delete automático sem necessidade de cláusulas WHERE is_deleted = false manuais. - Qualidade e Conformidade Industrial: Cobertura de testes automatizados com relatórios de execução no pipeline de CI.
🛠️ 2. Implementação Prática em C# 12, .NET 8, PostgreSQL e MediatR
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// Program.cs (Minimal APIs com Injeção de MediatR em .NET 8)
using MediatR;
using Empresa.Core.Application.Orders;
var builder = WebApplication.CreateBuilder(args);
// Configuração de Serviços
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(CreateOrderCommand).Assembly));
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
// Endpoint Minimal API com Injeção de MediatR
app.MapPost("/api/v1/orders", async (CreateOrderCommand command, ISender sender) =>
{
var orderId = await sender.Send(command);
return Results.Created($"/api/v1/orders/{orderId}", new { id = orderId });
})
.WithName("CreateOrder")
.WithOpenApi();
app.Run();
💡 Análise Passo a Passo do Código
- Injeção do MediatR:
builder.Services.AddMediatR(...)descobre e registra todos os handlers da aplicação por reflexão de assembly. - Endpoint Declarativo:
app.MapPostvincula a rota diretamente ao comando sem a sobrecarga de classes de controller. - Retorno Padronizado:
Results.Createdgera o código HTTP 201 com o cabeçalhoLocationapontando para o recurso criado.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto