首席开发顾问
Randy Patterson讨论了使用.NET Core 3中引入的新Worker Service项目项目的好处。
.NET Core 3引入了一个名为Worker Service的新项目模板。 该模板旨在为您提供跨平台服务的起点。 作为替代用例,它为通用控制台应用程序设置了一个非常好的环境,非常适合容器和微服务。

使用此模板的一些好处包括以下方面。

依赖注入
Worker Service模板配置了一个默认的Dependency注入容器,可供我们使用。 与通用控制台模板相比,这是一个巨大的好处。
添加服务涉及更新
Program.cs文件中的
ConfigureServices方法:
Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddTransient<ICustomerService,CustomerService>(); services.AddHostedService<Worker>(); });
构型
这里为工人服务重复了ASP.NET Core的相同配置提供程序设置。 这为我们提供了一个强大而熟悉的环境来存储配置信息:
- appsettings.json
- appsettings。{Environment} .json
- 用户密钥(仅用于开发)
- 环境变量
- 命令行参数
有关每个提供程序的其他信息,请参阅
此处发布的我以前的文章。
记录中
同样,日志记录提供程序已配置为与ASP.Net Core的默认设置匹配,从而为您提供以下提供程序:
- 主控台
- 除错
- 事件来源
- EventLog(仅在Windows上运行时)
您可以通过将
ConfigureLogging方法添加到
Program.cs中的
Host对象来修改日志记录提供程序:
Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }) .ConfigureLogging(logging => { logging.ClearProviders(); logging.AddConsole(); });
有关日志记录的其他信息,请参见ASP.NET Core
文档 。
工人启动班
最后,
Worker.cs文件是您大部分代码所在的位置。 基类
BackgroundService提供了3种可覆盖的方法,这些方法使您可以绑定到应用程序的生命周期:
ExecuteAsync-一种抽象方法,用作应用程序的主要入口点。 如果退出此方法,则您的应用程序将关闭。
StartAsync-一种虚拟方法,当重写该方法时,将在服务启动时调用该方法,该方法可用于一次性设置资源。
StopAsync-在应用程序关闭时调用的虚拟方法,是释放资源和处置对象的好地方。
总结
.NET Core 3中的新工作程序服务模板创建了一个托管环境,非常适合控制台应用程序,微服务,容器化应用程序和跨平台后台服务。 尽管可以独立于模板配置这些好处,但是Worker Service模板为我们提供了ASP.NET Core和控制台应用程序之间一致的启动环境。