使新的.NET Core 3 Worker Service神秘化

首席开发顾问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的相同配置提供程序设置。 这为我们提供了一个强大而熟悉的环境来存储配置信息:

  1. appsettings.json
  2. appsettings。{Environment} .json
  3. 用户密钥(仅用于开发)
  4. 环境变量
  5. 命令行参数

有关每个提供程序的其他信息,请参阅此处发布的我以前的文章。

记录中


同样,日志记录提供程序已配置为与ASP.Net Core的默认设置匹配,从而为您提供以下提供程序:

  1. 主控台
  2. 除错
  3. 事件来源
  4. 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和控制台应用程序之间一致的启动环境。

Source: https://habr.com/ru/post/zh-CN480048/


All Articles