Serviço de trabalho no .NET Core 3: o que é e por que é necessário

O .NET Core 3 apresenta um novo modelo de projeto chamado Worker Service. Este modelo foi desenvolvido para fornecer um ponto de partida para a criação de serviços entre plataformas. Como um caso de uso alternativo: fornece um ambiente muito bom para a criação de aplicativos de console, ideal para contêineres e microsserviços.



Leia mais sobre alguns dos benefícios de usar este modelo sob o gato.



Injeção de Dependência


O modelo de Serviço do Trabalhador configura um contêiner para injeção de dependência por padrão, pronto para uso. Essa é uma grande vantagem sobre o modelo geral de console.

A adição de serviços inclui 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


As mesmas configurações do provedor de configuração para o ASP.NET Core são duplicadas 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 (somente desenvolvimento)
  4. Variáveis ​​de ambiente
  5. Argumentos da linha de comando

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

Registo


Da mesma forma, os provedores de log foram configurados de acordo com as configurações padrão do ASP.Net Core, fornecendo os seguintes provedores:

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

Você pode adicionar provedores de log adicionando o método ConfigureLogging ao objeto Host em Program.cs :

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

Consulte a documentação do ASP.NET Core para obter mais informações.

Classe de inicialização do trabalhador


Por fim, a maior parte do seu código existirá no arquivo Worker.cs . Existem 3 métodos redefiníveis na classe BackgroundService base que permitem que você se relacione com o ciclo de vida do aplicativo:

ExecuteAsync é um método abstrato usado como o principal ponto de entrada do seu aplicativo. Se esse método for interrompido, o aplicativo será fechado.

StartAsync - Um método virtual que, quando substituído, é chamado quando o serviço é iniciado e pode ser usado para definir recursos de uma só vez.

StopAsync - Um método virtual chamado quando o aplicativo é fechado e é um bom local para liberar recursos e remover objetos.

Total


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 de contêiner e serviços em segundo plano entre plataformas. Embora esses benefícios possam ser personalizados independentemente do modelo, o Worker Worker fornece um ambiente de inicialização consistente para uso com o ASP.NET Core e os aplicativos de console.

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


All Articles