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