Desmistificando o novo Serviço do Trabalhador do .NET Core 3

O consultor de desenvolvedores Premier Randy Patterson discute os benefícios do uso do novo projeto de serviço do trabalhador introduzido no .NET Core 3.

O .NET Core 3 introduziu um novo modelo de projeto chamado Worker Service. Este modelo foi desenvolvido para fornecer um ponto de partida para serviços de plataforma cruzada. Como um caso de uso alternativo, ele configura um ambiente muito agradável para aplicativos gerais de console, perfeito para contêineres e microsserviços.



Alguns dos benefícios do uso deste modelo incluem as seguintes áreas.



Injeção de dependência


O modelo de Serviço do Trabalhador configura um contêiner de injeção de Dependência padrão, pronto para uso. Esse é um benefício enorme comparado ao modelo genérico do console.

A adição de serviços envolve a atualização do método ConfigureServices no arquivo Program.cs :

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

Configuração


A mesma instalação de provedores de configuração para o ASP.NET Core é duplicada aqui para Serviços do Trabalhador. Isso nos fornece um ambiente poderoso e familiar para armazenar informações de configuração:

  1. appsettings.json
  2. appsettings. {Environment} .json
  3. Segredos do usuário (apenas para desenvolvimento)
  4. Variáveis ​​de ambiente
  5. Argumentos da linha de comando

Para informações adicionais sobre cada um dos provedores, consulte o meu artigo anterior publicado aqui .

Registo


Da mesma forma, os provedores de log foram configurados para corresponder à configuração padrão do ASP.Net Core, oferecendo os seguintes provedores:

  1. Console
  2. Depurar
  3. Fonte do evento
  4. EventLog (apenas quando executado no Windows)

Você pode modificar os provedores de log adicionando um método ConfigureLogging ao objeto Host no Program.cs :

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

Para obter informações adicionais sobre o log, consulte a documentação do ASP.NET Core.

Classe de inicialização do trabalhador


Por fim, o arquivo Worker.cs é onde a maior parte do seu código existirá. Existem três métodos substituíveis da classe base BackgroundService que permitem vincular o ciclo de vida do seu aplicativo:

ExecuteAsync - um método abstrato usado como o principal ponto de entrada do seu aplicativo. Se esse método sair, seu aplicativo será encerrado.

StartAsync - Um método virtual que, quando substituído, é chamado quando o serviço é iniciado e pode ser usado para a configuração única de recursos.

StopAsync - Um método virtual chamado quando o aplicativo está sendo desligado e é um bom local para liberar recursos e descartar objetos.

Sumário


O novo modelo de serviço do trabalhador no .NET Core 3 cria um ambiente de hospedagem adequado para aplicativos de console, microsserviços, aplicativos em contêiner e serviços em segundo plano entre plataformas. Embora esses benefícios possam ser configurados independentemente do modelo, o modelo de Serviço do Trabalhador nos fornece um ambiente de inicialização consistente entre os aplicativos ASP.NET Core e Console.

Source: https://habr.com/ru/post/pt480048/


All Articles