.NET Core 3中的工作者服务:它是什么,为什么有必要

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

  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模板创建了一个托管环境,非常适合控制台应用程序,微服务,容器应用程序和跨平台后台服务。 尽管可以独立于模板自定义这些好处,但是Worker Service提供了与ASP.NET Core和控制台应用程序一起使用的一致的启动环境。

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


All Articles