用途:在 .NET 项目(含非 Web 应用)中正确接入 Microsoft.Extensions 技术栈,涵盖 Generic Host、依赖注入、配置、日志、选项与 HttpClientFactory 等共享基础设施。触发场景包括装配 DI、配置、日志或选项,向非 Web 应用引入 Generic Host 模式,以及清理服务注册、类型化 HTTP 客户端或共享基础设施代码。
主要能力与实践要点:需要配置、DI、日志、托管服务或统一启动流程时优先使用 Generic Host;服务注册保持可预测,在边缘做组合,仅在抽象能带来灵活性时才用接口隐藏具体实现;用 options 绑定结构化配置,并在启动时校验配置,避免错误设置推迟到运行时报错;对外 HTTP 优先使用 IHttpClientFactory 以及类型化或命名客户端,而非临时单例或每次调用新建 HttpClient;使用日志类别和配置驱动的日志级别,而非分散的临时日志行为;Kubernetes 托管服务若需从 Pod 资源配额获取 CPU/内存请求与限制指标,优先使用 10.7+ 的稳定包 Microsoft.Extensions.Diagnostics.ResourceMonitoring.Kubernetes;除非仓库确实需要可复用组合原语,否则避免在 Microsoft.Extensions 之上搭建迷你框架。
版本说明:dotnet/extensions v10.9.0 新增实验性 AI 路由与故障转移客户端,并包含 HTTP 诊断/源日志修复;Generic Host、DI、配置、日志、选项与 IHttpClientFactory 模式不变,AI 相关架构应转向 microsoft-extensions-ai。MCP 服务器项目模板已从 dotnet/extensions 移入 ASP.NET Core/.NET SDK 发行版,脚手架自动化应改用 SDK 提供的模板,而非固定已移除的 extensions 模板包。若仓库自动化依据此前 v10.8.4 变更创建 AI 模板,需显式传入 --provider azureopenai、--provider ollama 或 --provider openai,并校验所选提供程序的密钥与本地开发路径。保持 Microsoft.Extensions 包版本在同一服务线内对齐,升级后重新运行主机启动与 options 校验测试。
交付与验证:产出干净的主机接线与服务注册、可观测且可测试的配置与日志、自然融入 .NET 栈的基础设施代码;验证服务生命周期正确、关键处配置为强类型、主机设置易于调试与推理,并在关注 Pod 请求/限制维度时使用稳定的配额提供程序 API 进行 Kubernetes 资源监控。参考文档包括 patterns.md(DI、配置、选项、日志、HttpClientFactory、托管服务模式)与 anti-patterns.md(DI、配置、选项、日志、HttpClient、托管服务的常见错误)。