Worker Service 是一种用于构建长时间运行的后台服务的模板,适用于处理定时任务、队列消息、数据聚合等场景。它基于 IHostedService 接口,提供跨平台支持,并集成了依赖注入(DI)、日志记录和配置功能。
创建 Worker Service 项目
通过命令 dotnet new worker -n "MyWorkerService" 或在 Visual Studio 中选择 Worker Service 模板即可创建项目。项目包含以下核心文件:
示例代码展示了如何在 Program.cs 中注册 Worker 服务:
Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
})
.Build()
.Run();
Worker 类实现
Worker 类继承自 BackgroundService,需要重写 ExecuteAsync 方法以定义服务逻辑。以下是一个简单的实现:
public class Worker : BackgroundService
{
private readonly ILogger<Worker> _logger;
public Worker(ILogger<Worker> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
部署为 Windows 服务或 Linux 守护程序
部署为 Windows 服务
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
});
部署为 Linux 守护程序
Host.CreateDefaultBuilder(args)
.UseSystemd()
.ConfigureServices(services =>
{
services.AddHostedService<Worker>();
});
多 Worker 类支持
可以在一个项目中定义多个 Worker 类,并在 Program.cs 中分别注册:
services.AddHostedService<WorkerOne>();
services.AddHostedService<WorkerTwo>();
每个 Worker 类独立运行,适合处理不同的后台任务。
注意事项
Worker Service 是构建后台任务和微服务的理想选择,结合 .NET 的依赖注入和日志功能,可以快速开发高效的长时间运行服务。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。