SuperAPI AI 工具集

dotnet-aspire-patterns

部署与运维

查看项目

更新于 10-16 01:28

技能介绍

用途:面向构建云就绪分布式 .NET 应用的 Aspire 编排模式,覆盖 AppHost 配置、服务发现、集成后端服务(数据库、缓存、消息代理)的组件模型、本地可观测性仪表板、分布式健康检查,以及 Aspire 与手动容器编排的选择。范围外内容(如原始 Dockerfile、Kubernetes/Compose 部署、OpenTelemetry SDK 细节、DI 生命周期、后台服务托管)交由其他技能处理。

主要能力:Aspire 提供编排(用 C# 的 AppHost 定义分布式拓扑)、组件(常见后端服务的预配置 NuGet 包)、Service Defaults(OpenTelemetry、健康检查、弹性的共享配置)和仪表板(本地追踪/日志/指标/资源状态 UI)。Aspire 不是部署目标,只编排本地开发与测试体验;生产环境由它生成清单供 Azure Developer CLI、Kubernetes 等工具消费。

使用方式:AppHost 是使用 Aspire SDK 的 .NET 项目,引用其他项目和后端服务并接线服务发现,需在属性组设置 IsAspireHost 为 true,并引用 Aspire.Hosting.AppHost 及各后端 Hosting 包。拓扑用 DistributedApplication.CreateBuilder 定义,例如 AddPostgres、AddRedis、AddRabbitMQ,再为项目 AddProject 并 WithReference、WithExternalHttpEndpoints。WaitFor 控制启动顺序,资源等待依赖健康后再启动,不用时并行启动。服务发现自动注入端点信息为环境变量与配置,代码中可用 https+http://worker 这类 scheme 前缀让 HttpClient 先试 HTTPS 再回退 HTTP;连接字符串通过标准 ConnectionStrings 配置节注入,如 AddNpgsqlDbContext。组件分 Hosting 包(装在 AppHost)与客户端包(装在服务项目),客户端 Add* 方法会注册 DI、健康检查与遥测并应用默认弹性。ServiceDefaults 是各服务项目必须引用的共享库,调用 AddServiceDefaults 和 MapDefaultEndpoints 提供 /health 与 /alive。仪表板随 AppHost 自动启动(dotnet run --project MyApp.AppHost 时打印登录 URL),也可用独立容器镜像 mcr.microsoft.com/dotnet/aspire-dashboard:9.1 运行,应用将 OTLP 导出到 http://localhost:4317、在 http://localhost:18888 查看。

适用场景:多个 .NET 服务加后端基础设施、需要统一可观测性默认值。单个 API 加数据库为可选,带额外开销;纯非 .NET 服务收益降低;已有 Kubernetes/Compose 本地开发需评估迁移成本。

限制与注意事项:AppHost 仅限开发期,不用于生产部署;应优先使用组件而非裸连接字符串;不要重复配置 OpenTelemetry,ServiceDefaults 已注册 OTel 提供程序,手动添加会导致重复采集。容器默认使用临时存储,需 WithDataVolume 持久化;可用 AddConnectionString 引用不由 Aspire 管理的外部资源。其余细节(如 AZD、K8s 生产部署、自定义 span、健康检查发布时间等)暂未提供或见其他技能。