Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2
Continuando a série dos Workers Services, nesta parte final do nosso post, vou trazer como podemos criar um Worker Service no Linux.

Fala Galera,
Continuando a série dos Workers Services, nesta parte final do nosso post, vou trazer como podemos criar um Worker Service no Linux↳Linux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps →.
Desejar criar um Worker Service no Windows? Dê uma lida na parte 1 clicando aqui
Recap: O que é um Worker Service?
É um modelo do .NET↳.NET113 conteúdosNovidades do .NET 9 – o tipo genérico OrderedDictionaryDev (Back & Front) · dez 2024Novidades .NET 10: novas formas de uso do .NET CLIDev (Back & Front) · dez 2025Novidades do .NET 5: implementando um proxy reverso com YARP + ASP.NET 5Dev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) → Core que permite criar serviços em segundo plano (background) para processamentos contínuo ou agendados. Esses serviços em background implementam a interface IHostedService e podem ser implantados como um serviço do Windows, mas também podemos implantar como daemons do Linux. Isso é muito legal. Neste post, veremos como criar e implantar um Worker Service como um Serviço do Linux.
Recap: Aonde utilizamos?
Os serviços em background são perfeito para qualquer processamento em segundo plano, como processamento de mensagens de uma fila Kafka, RabbitMQ, SQS, Azure Service Bus, processamento de um arquivo de retorno em caso de compras online com pagamento em boleto entre outros cenários. E para esses cenários em que precisamos criar serviços em background, o .NET Core traz um recurso muito interessante: Worker Service.
Criando um Work Service
Em seu prompt de comando favorito, digite “dotnet new worker” ou na tela inicial do Visual Studio↳Leia tambémNovidades do .NET Core 3.0: desenvolvimento em WPF com o Visual Studio 2019Dev (Back & Front) · mai 2019 escolha Work Service conforme imagem abaixo:
Com o template criado, abra o program.cs. Ele exibirá um código semelhante com o código abaixo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Workers_linux
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
}Trabalhando com o Linux:
Para que possamos rodar nossos workers em background no Linux devemos adicionar o pacote “Microsoft.Extensions.Hosting.Systemd” com ele instalado, vamos poder utilizar o systemctl para trabalhar com processos em background. O Linux que eu escolhi para os testes foram o Ubuntu 20.04 LTS
Adicione o pacote com o comando “dotnet add package Microsoft.Extensions.Hosting.Systemd” ou adicione utilizando o Visual Studio Manager Nuget Package.
Após a instalação do pacote, abra o program.cs e adicione o “UseSystemd” o conforme mostrado abaixo:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSystemd()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});Criando o Arquivo Unit File
Estamos com o nosso serviço pronto, devemos informar ao systemctl como executá-lo. No prompt de comando do Linux, vá até a pasta /etc/systemd/system. Crie um arquivo com o final .service. Neste meu exemplo eu criei um arquivo chamado work.dotnet.service, a configuração do serviço deverá ser parecida com essa.
[Unit]
Description=Worker .NET
[Service]
Type=notify
ExecStart=/usr/bin/dotnet /home/rbcruz/source/workers/bin/Debug/netcoreapp3.1/workers.dll
[Install]
WantedBy=multi-user.targetExecute o comando “sudo systemctl daemon-reload”, com este comando sendo executado, o systemctl irá carregar as novas configurações que acabamos de criar.
Para iniciar o nosso serviço, execute:
- sudo systemctl start work.dotnet.service
Para parar o nosso serviço, execute:
- sudo systemctl stop work.dotnet.service
Para habilitar no startup do sistema operacional, execute:
- sudo systemctl enable work.dotnet.service
Para verificar o status do nosso serviço, execute:
- sudo systemctl status work.dotnet.service
Veja as imagens do nosso serviço rodando no Linux.
Conclusão
Quando precisamos executar tarefas em background para processamentos longos, a melhor maneira é criarmos serviços em background para isso. Esses serviços em background são chamados de Work Service no .NET Core. Neste post vimos como criar um Work Service e como fazer as configurações como Systemd no Linux. Assim chegamos ao final de nossa série sobre Worker Service. E aí o que acharam, comenta aí =]
Abs e até a próxima









