Skip to main content

Aspire | CSharp

  • Aspire | CSharp
info

Aspire é para ambiente de desenvolvimento para facilitar a integração de vários componentes complexos. Ele abstrai a complexidade de Docker-Compose

Slogan: Aspire são ferramentas, templates e pacotes que tornam mais rápido e fácil construir apps <inserir palavra - seguros, observáveis, escaláveis, resilientes, etc>

danger

Tomar cuidado ao criar projetos com o ASPIRE em que ambos tem INSTRUÇÕES DE NÍVEL SUPERIOR, pois ambos podem conflitar.

Situação ocorreu entre um projeto do tipo WORKER e ASPIRE.

AppHost | Aspire

  • Como orquestrador central, o AppHost coordena a execução de todos os projetos no aplicativo .NET Aspire. Ele gerencia dependências, define definições de configuração e garante integração perfeita entre diferentes componentes, como ApiService e Web.

var builder = DistributedApplication.CreateBuilder(args);

var apiservice = builder.AddProject<Projects.OrangeFinance>("api-orange");

builder.Build().Run();

ServiceDefault | Aspire

  • Esse componente é crucial no gerenciamento e na configuração de dependências no aplicativo. Ele fornece uma abordagem padronizada para configurar serviços, permitindo escalabilidade e manutenção mais fáceis do aplicativo.
info

Adiciona a parte de logs, health checks, instrumentações

info

Nos nossos projetos, precisamos adicionar o builder.AddServiceDefaults(); que vem da referência do projeto AspireApp.ServiceDefaults porque ele realiza as seguintes coisas:

🧩 1. Configura padrões de observabilidade

Adiciona automaticamente:

  • OpenTelemetry para logs, métricas e traces.
  • Integração com Aspire Dashboard, Prometheus, Grafana, Jaeger ou outros.
  • Configuração de logging estruturado (JSON por padrão).

Ou seja, você não precisa configurar manualmente cada parte de observabilidade em cada projeto.


🔗 2. Configura service discovery e health checks

Registra o serviço com o service discovery usado pelo Aspire (por exemplo, via Dapr, Consul ou o próprio Aspire host) e adiciona endpoints como:

  • /health
  • /alive
  • /ready

Isso permite que o Aspire saiba quando sua API está pronta e saudável para receber tráfego.


🧰 3. Aplica boas práticas de hospedagem

Inclui convenções padrão para:

  • Configuração de Kestrel, HTTP/HTTPS;
  • Configuração unificada via appsettings.json, variáveis de ambiente e secrets;
  • Dependency Injection e Configuration alinhadas com o ecossistema do Aspire.

⚙️ 4. Simplifica a integração com outros serviços Aspire

Ao usar AddServiceDefaults(), seu serviço automaticamente:

  • Participa da malha de observabilidade;
  • Herda configurações padrão de rede, telemetry e health;
  • Usa a mesma configuração base aplicada aos demais serviços no projeto Aspire.

🧠 Exemplo simples:

var builder = WebApplication.CreateBuilder(args);

// Aplica padrões Aspire
builder.AddServiceDefaults();

builder.Services.AddControllers();

var app = builder.Build();

// Configura endpoints padrões
app.MapDefaultEndpoints();

app.MapControllers();

app.Run();

Aqui:

  • AddServiceDefaults() adiciona configurações padrão de serviço.
  • MapDefaultEndpoints() mapeia endpoints de health e telemetry.

✅ Em resumo:

builder.AddServiceDefaults(); ➡️ Centraliza e aplica configurações padrão para observabilidade, descoberta de serviços, health checks e boas práticas de hosting, de acordo com o padrão Aspire.