AlefCarlos.AspNetCoreDefaults
1.0.1
dotnet add package AlefCarlos.AspNetCoreDefaults --version 1.0.1
NuGet\Install-Package AlefCarlos.AspNetCoreDefaults -Version 1.0.1
<PackageReference Include="AlefCarlos.AspNetCoreDefaults" Version="1.0.1" />
<PackageVersion Include="AlefCarlos.AspNetCoreDefaults" Version="1.0.1" />
<PackageReference Include="AlefCarlos.AspNetCoreDefaults" />
paket add AlefCarlos.AspNetCoreDefaults --version 1.0.1
#r "nuget: AlefCarlos.AspNetCoreDefaults, 1.0.1"
#:package AlefCarlos.AspNetCoreDefaults@1.0.1
#addin nuget:?package=AlefCarlos.AspNetCoreDefaults&version=1.0.1
#tool nuget:?package=AlefCarlos.AspNetCoreDefaults&version=1.0.1
AspNetCoreDefaults 🔧
Biblioteca base de convenções e extensões para aplicações ASP.NET Core focadas em Web APIs e serviços: oferece defaults opinativos para telemetria, logging HTTP, health checks, service discovery e configurações de HttpClient.
Objetivo
Fornecer um conjunto pequeno e reutilizável de padrões para serviços, permitindo que equipes iniciem novas APIs com observabilidade, resiliência e endpoints operacionais configurados de forma consistente.
Pacote / dependências relevantes
Baseadas no arquivo de projeto (AlefCarlos.AspNetCoreDefaults.csproj):
Microsoft.Extensions.AmbientMetadata.Application(ApplicationMetadata)Microsoft.Extensions.Http.Resilience(resiliência de HttpClient)Microsoft.Extensions.ServiceDiscovery(service discovery)OpenTelemetry.Extensions.Hosting,OpenTelemetry.Instrumentation.*,OpenTelemetry.Exporter.OpenTelemetryProtocol(telemetria)
APIs principais
TBuilder AddDefaults<TBuilder>(this TBuilder builder) where TBuilder : IHostApplicationBuilder- Registra
ApplicationMetadata(bind emambientmetadata:application, validação em start) - Chama
AddHttpLoggingDefaults(),ConfigureOpenTelemetry(),AddDefaultHealthChecks()e registra service discovery - Configura defaults para
HttpClient(resiliência e service discovery)
- Registra
TBuilder AddHttpLoggingDefaults<TBuilder>(this TBuilder builder)- Habilita
HttpLoggingcomRequestPropertiesAndHeaders | ResponsePropertiesAndHeaders | Duration CombineLogs = true- Registra
FilterRequestLoggingInterceptorcomoIHttpLoggingInterceptor
- Habilita
TBuilder ConfigureOpenTelemetry<TBuilder>(this TBuilder builder)- Configura logging para incluir mensagem formatada e scopes
- Adiciona métricas e tracing: AspNetCore, HttpClient e Runtime
- Exclui rotas de health (
/healthe/alive) de tracing - Chama mecanismo que registra OTLP exporter caso
OTEL_EXPORTER_OTLP_ENDPOINTseja definido
TBuilder AddDefaultHealthChecks<TBuilder>(this TBuilder builder)- Adiciona um health check
selfmarcado com taglive(garante liveness básico)
- Adiciona um health check
WebApplication MapDefaultEndpoints(this WebApplication app)- Mapeia
/health(readiness — todos checks) - Mapeia
/alive(liveness — apenas checks taggeados comlive) - Mapeia
/app-infoque retornaApplicationMetadata(excluÃdo da documentação do OpenAPI viaExcludeFromDescription())
- Mapeia
Comportamentos e detalhes técnicos
ApplicationMetadata
- Registrado via
AddOptionsWithValidateOnStart<ApplicationMetadata>()eBindConfiguration("ambientmetadata:application"). BuildVersioné inferido deAssemblyInformationalVersion→Assembly.Version→ fallback0.1.0+unknown-app.- Se
OTEL_SERVICE_NAMEestiver definido, sobrescreveApplicationNameusado pela instrumentação. EnvironmentNameé definido a partir deIHostEnvironment.EnvironmentName.
- Registrado via
OpenTelemetry
- Instrumentação padrão: AspNetCore, HttpClient e Runtime
- Tracing omite health endpoints para reduzir ruÃdo
- Se
OTEL_EXPORTER_OTLP_ENDPOINTestiver presente, registra o exporter OTLP automaticamente
HttpLogging e interceptor
- O interceptor
FilterRequestLoggingInterceptorremove logging (HttpLoggingFields.None) para endpoints comuns sensÃveis/ruidosos:/metrics,/env,/health,/alive,/docs,/swagger. CombineLogs = trueativa logs combinados por request/response
- O interceptor
HttpClient defaults
- Ao configurar clientes HTTP via helper interno, é aplicada resiliência padrão (
AddStandardResilienceHandler) e integração com service discovery (AddServiceDiscovery).
- Ao configurar clientes HTTP via helper interno, é aplicada resiliência padrão (
Exemplo de uso (Program.cs)
var builder = WebApplication.CreateBuilder(args);
// Registra defaults opinativos (telemetria, logging, health checks, service discovery)
builder.AddDefaults();
var app = builder.Build();
// Use o middleware de logging HTTP conforme necessário
app.UseHttpLogging();
// Mapear endpoints operacionais
app.MapDefaultEndpoints();
app.Run();
Variáveis de ambiente e configuração
OTEL_SERVICE_NAME— (opcional) define o nome do serviço para OpenTelemetryOTEL_EXPORTER_OTLP_ENDPOINT— (opcional) se definido, habilita o OTLP exporter- Configuração de
ambientmetadata:applicationpode fornecerApplicationName,BuildVersion, etc.
Boas práticas e recomendações
- Mantenha
/app-infoprotegida em ambientes públicos se retornar dados sensÃveis. - Controle
HttpLoggingpor ambiente e nÃveis de log para evitar vazamento de dados em produção. - Teste instrumentação e exporters (OTLP) em staging antes de habilitar em produção.
- Para cenários avançados, estenda
AddDefaults()em sua aplicação para inserir checks, middlewares ou exportadores adicionais.
Exemplos & testes
- Veja
samples/webapi-default.cspara uso integrado comAddWebApiDefaults()(apenas um nÃvel acima, mas demonstraAddDefaults()em ação).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.AmbientMetadata.Application (>= 10.1.0)
- Microsoft.Extensions.Http.Resilience (>= 10.1.0)
- Microsoft.Extensions.ServiceDiscovery (>= 10.1.0)
- OpenTelemetry.Exporter.OpenTelemetryProtocol (>= 1.14.0)
- OpenTelemetry.Extensions.Hosting (>= 1.14.0)
- OpenTelemetry.Instrumentation.AspNetCore (>= 1.14.0)
- OpenTelemetry.Instrumentation.Http (>= 1.14.0)
- OpenTelemetry.Instrumentation.Runtime (>= 1.14.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AlefCarlos.AspNetCoreDefaults:
| Package | Downloads |
|---|---|
|
AlefCarlos.AspNetCoreDefaults.WebApi
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.