SuperAPI AI 工具集

worker-services

部署与运维

查看项目

更新于 10-16 06:45

技能介绍

用途:指导在 .NET 中构建长时间运行的后台服务或定时工作进程,也适用于向应用添加托管服务、将其拆分为独立 worker 进程,以及审查优雅关闭、取消、队列处理与健康行为。

主要能力:以 BackgroundService 为基类,只实现 ExecuteAsync,由框架处理 StartAsync/StopAsync 与取消;用 IServiceScopeFactory 为作用域服务(如 DbContext)创建作用域;用 PeriodicTimer 实现定时任务;通过取消令牌传播实现优雅关闭;用 IHealthCheck 暴露就绪/存活状态;队列处理模式含 IBackgroundTaskQueue 与毒消息处理;支持 AddWindowsService 部署为 Windows 服务,并可发布为单文件。

使用方式:在 Program.cs 中通过 Host.CreateApplicationBuilder 注册 AddHostedService,按需添加 AddHealthChecks 与自定义检查;定时任务用 PeriodicTimer 循环;作用域依赖在每次工作单元内创建作用域解析;Windows 服务用 AddWindowsService 配置 ServiceName,项目文件可设 PublishSingleFile 与 SelfContained。

适用场景:后台队列消费、定时批处理、独立 worker 进程、Kubernetes 探针与生产可观测性。

限制与注意:托管服务默认不创建作用域,直接注入作用域服务会导致捕获依赖;未处理异常会终止服务;避免阻塞 StartAsync、async void 与紧循环轮询;多实例需考虑分布式锁。资料提到 .NET 运行时 v10.0.11 处于服务状态,升级后建议重跑 cgroup-v2 内存限制检测、取消、优雅关闭、长运行线程静态与 GC 路径、NativeAOT/WASM 启动及 Windows 目录枚举等验证,而非默认改架构。具体 API 以当前官方 Worker Services 与托管服务文档为准。