用途:为 Aspire 分布式应用创建共享的 ServiceDefaults 项目,集中配置所有服务的通用能力,避免在每个服务中重复设置。适用于构建 Aspire 分布式应用、需要跨服务一致的日志/追踪/指标、共享健康检查、以及配置 HttpClient 弹性与服务发现的场景。
主要能力:ServiceDefaults 提供四类公共配置——OpenTelemetry(日志、追踪、指标)、健康检查(就绪与存活端点)、服务发现(自动解析服务地址)、HTTP 弹性(重试与断路器策略)。每个服务引用该项目并调用 AddServiceDefaults()。
使用方式:项目结构通常包含 MyApp.ServiceDefaults(含 Extensions.cs 与 csproj)、各服务项目(在 Program.cs 调用 AddServiceDefaults())以及 AppHost。csproj 需设置 IsAspireSharedProject 为 true 并引用 Microsoft.Extensions.Http.Resilience、Microsoft.Extensions.ServiceDiscovery、OpenTelemetry 系列包。Extensions.cs 中提供 AddServiceDefaults、ConfigureOpenTelemetry、AddDefaultHealthChecks、MapDefaultEndpoints 等扩展方法。API 中使用 builder.AddServiceDefaults() 后调用 app.MapDefaultEndpoints();Worker 等非 Web 主机同样可调用 AddServiceDefaults()。可通过 AddCheck 增加数据库、Redis 或自定义健康检查,或通过 AddSource 添加 Akka.NET 与自定义 ActivitySource 追踪。AppHost 自动配置 OTLP 端点,服务通过 OTEL_EXPORTER_OTLP_ENDPOINT 将遥测发送到 Aspire Dashboard。
限制:默认 MapDefaultEndpoints 仅在开发环境暴露健康检查端点,生产环境需自行保护端点或使用内部端口、授权、限流等措施;健康检查会从追踪中过滤以减少噪音;健康检查需打标签区分存活与就绪。生产配置细节及具体收费、价格、平台效果资料未提供。