.NET Core 3引入了一个名为Worker Service的新项目模板。 该模板旨在为您提供创建跨平台服务的起点。 作为替代用例:它为创建控制台应用程序提供了一个非常好的环境,非常适合容器和微服务。

详细了解在猫下使用此模板的一些好处。

依赖注入
默认情况下,Worker Service模板设置了一个用于依赖项注入的容器,可以使用。 与整个控制台模板相比,这是一个巨大的优势。
添加服务包括更新
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模板创建了一个托管环境,非常适合控制台应用程序,微服务,容器应用程序和跨平台后台服务。 尽管可以独立于模板自定义这些好处,但是Worker Service提供了与ASP.NET Core和控制台应用程序一起使用的一致的启动环境。