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:
- appsettings.json
- appsettings. {Environment} .json
- Segredos do usuário (apenas para desenvolvimento)
- Variáveis de ambiente
- 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:
- Console
- Depurar
- Fonte do evento
- 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.