Worker Service в .NET Core 3: что такое и зачем нужно / Хабр

Worker startup class

Наконец, в файле 

Worker.cs

 будет существовать основная часть вашего кода. В базовом классе 

BackgroundService

 есть 3 переопределяемых метода, которые позволяют связать себя с жизненным циклом приложения:

ExecuteAsync – абстрактный метод, используемый в качестве основной точки входа для вашего приложения. Если этот метод прерывается, приложение закрывается.

StartAsync – Виртуальный метод, который, при переопределении, вызывается при запуске службы и может использоваться для одноразовой настройки ресурсов.

StopAsync – Виртуальный метод, который вызывается, когда приложение закрывается, и является хорошим местом для освобождения ресурсов и удаления объектов.

Внедрение зависимости


Шаблон Worker Service настраивает контейнер для внедрения зависимостей по умолчанию, готовый для использования. Это огромное преимущество по сравнению с общим шаблоном консоли.

Добавление служб включает обновление метода ConfigureServices в файле Program.cs:

Host.CreateDefaultBuilder(args)
   .ConfigureServices((hostContext, services) =>
   {
      services.AddTransient<ICustomerService,CustomerService>();
      services.AddHostedService<Worker>();
   });

Конфигурация

Те же настройки провайдеров конфигурации для ASP.NET Core дублируются здесь для Worker Services. Это дает нам мощную и знакомую среду для хранения информации о конфигурации:

Логирование


Аналогично, провайдеры журналов были настроены в соответствии с настройками по умолчанию для ASP.Net Core, предоставляя вам следующих провайдеров:

  1. Console
  2. Debug
  3. EventSource
  4. EventLog (только при запуске на Windows)

Вы можете добавить провайдеров логирования, добавив метод 

ConfigureLogging

 к объекту 

HostProgram.cs

Host.CreateDefaultBuilder(args)
   .ConfigureServices((hostContext, services) =>
   {
      services.AddHostedService<Worker>();
   })
   .ConfigureLogging(logging =>
   {
      logging.ClearProviders();
      logging.AddConsole();
   });


Для получения дополнительной информации изучайте 

 по ASP.NET Core.

Расширения для добавления сервисов

Нередко для сервисов создают собственные методы добавления в виде методов расширения для интерфейса IServiceCollection. Например, создадим подобный метод
для сервиса TimeService:

using Microsoft.Extensions.DependencyInjection;

public static class ServiceProviderExtensions
{
    public static void AddTimeService(this IServiceCollection services)
    {
        services.AddTransient<TimeService>();
    }
}

И теперь используем этот метод:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTimeService();
}

НазадСодержаниеВперед

:/>  Как ускорить windows 10

Итого

Новый шаблон Worker Service в .NET Core 3 создает среду хостинга, которая хорошо подходит для консольных приложений, микросервисов, контейнерных приложений и кроссплатформенных фоновых сервисов. Хотя эти преимущества можно настроить и независимо от шаблона, Worker Service предоставляет согласованную среду запуска для использования с ASP.NET Core и консольными приложениями.

Оставьте комментарий