Introdução aos Serviços do Windows em C#
Os serviços do Windows são ferramentas poderosas no ecossistema .NET , capazes de executar tarefas em segundo plano sem intervenção do usuário. Criar um serviço do Windows em C# pode parecer complexo, mas em seu vídeo " Introdução a Serviços do Windows em C# - Como criar, instalar e usar um serviço usando o Topshelf ", Tim Corey explica tudo passo a passo.
Neste artigo, vamos analisar esse vídeo, abordando cada tópico para proporcionar clareza e continuidade.
Introdução aos Serviços do Windows
Tim apresenta os serviços do Windows como ferramentas poderosas e frequentemente negligenciadas para automação. Esses aplicativos são projetados para serem executados em segundo plano, realizando tarefas sem a necessidade de uma interface de usuário. Exemplos comuns incluem o SQL Server Agent ou os serviços Hyper-V.
Tim enfatiza a importância da prática para dominar C#. Ele recomenda baixar o código-fonte, cujo link está na descrição do vídeo, para aprendizado prático.
Criando um aplicativo de demonstração para console
Usando o Visual Studio, Tim cria um novo projeto de aplicativo de console chamado SimpleHeartbeatService. Embora seja possível usar um modelo de projeto de Serviço do Windows, Tim prefere a abordagem de console pela simplicidade na depuração.
"A ideia aqui não é sobre qual código eu coloco aqui, mas sim sobre como criar o próprio serviço", observa Tim.
O que é um serviço do Windows?
Tim abre a guia Serviços no Windows usando a pesquisa do menu Iniciar (basta digitar "serviços" e pressionar Enter). Ele explica que os serviços que rodam em segundo plano executam funções vitais do sistema operacional, como área de trabalho remota ou servidor MySQL.
O objetivo é criar uma nova entrada nesta lista usando código personalizado.
Tipos de projeto do Visual Studio: Aplicativo de console vs. Serviço do Windows
Você pode ficar tentado a selecionar o projeto de Serviço do Windows no Visual Studio, mas Tim explica que é mais difícil depurá-lo. Em vez disso, um aplicativo de console permite que você execute e teste o código localmente, reduzindo a necessidade de conectar um depurador a um serviço em execução.
"O tipo de projeto de serviço integrado dificulta a depuração porque primeiro é necessário instalá-lo e depois conectar um depurador."
Adicionando o Topshelf via NuGet
Para simplificar a implementação do serviço, Tim adiciona o Topshelf, um framework de código aberto, via NuGet. Esta biblioteca popular (com milhões de downloads) ajuda a criar serviços do Windows sem código repetitivo.
Passos:
-
Clique com o botão direito do mouse em Referências.
-
Selecione Gerenciar Pacotes NuGet
- Pesquise e instale o Topshelf
Escrevendo a lógica do serviço
Tim cria uma classe Heartbeat com dois métodos públicos: Start() e Stop(). Dentro do construtor, ele configura um System.Timers.Timer para ser executado a cada segundo.
O evento "Tempo Decorrido" deste temporizador adiciona o tempo atual a um arquivo .txt na pasta C:\temp\demos\. Isso simula uma tarefa em segundo plano que é executada continuamente.
"Este temporizador escreverá em um arquivo de texto a cada segundo, mostrando que o serviço está ativo."
Isso simula o funcionamento de processos de longa duração em serviços reais, como a digitalização de pastas ou a impressão de documentos.
Serviço de cabeamento com Topshelf
Utilizando o HostFactory.Run, Tim integra o Topshelf ao aplicativo:
-
Define a classe Heartbeat
-
Mapeia os métodos Start() e Stop()
- Configura o serviço para ser executado como LocalSystem, concedendo as permissões necessárias.
Ele também define metadados para o serviço:
-
Nome do serviço: HeartbeatService
-
Nome de exibição: Serviço de Batimentos Cardíacos
- Descrição: Utilizado para fins de demonstração em um vídeo do YouTube
Executando o serviço como um aplicativo de console
Antes da instalação, Tim executa o aplicativo para testá-lo. O temporizador adiciona corretamente os registros de data e hora ao arquivo heartbeat.txt. Utilizando o recurso de monitoramento do Notepad++, ele exibe atualizações em tempo real.
Instalando e verificando o serviço
Tim copia o arquivo .exe e os arquivos relacionados da pasta bin\Debug para um local permanente (como C:\demos\HeartbeatService). Utilizando um prompt de comando com privilégios de administrador, ele executa os seguintes comandos:
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start
Isso adiciona o serviço ao Gerenciador de Controle de Serviços. Ao abrir novamente a aba Serviços e clicar em Atualizar, o serviço agora está visível e em execução.
"É muito fácil instalar um serviço e é muito fácil fazer coisas com um serviço."
Para desinstalar:
SimpleHeartbeatService.exe uninstall
SimpleHeartbeatService.exe uninstall
Resumo: Benefícios e Considerações
Tim recapitula que criar e instalar um serviço usando o Topshelf é muito simples. No entanto, ele alerta que a gravação infinita de arquivos pode levar a problemas de armazenamento, o que serve como um bom lembrete para o gerenciamento adequado de logs.
Ideias de serviço no mundo real
Tim compartilha ideias práticas para serviços do Windows:
-
Limpeza de pastas: Exclua arquivos antigos da pasta Downloads
-
Organização de imagens: Organize as fotos em pastas por data.
-
Processamento de CSV: Monitore uma pasta e importe automaticamente arquivos CSV para um banco de dados.
- Automação de e-mail: Monitore uma mesa de suporte e envie notificações.
Esses exemplos mostram como usar serviços para automatizar tarefas em segundo plano e integrar-se a ferramentas como SQL Server, OneDrive e agendadores de tarefas.
Considerações finais
Tim conclui incentivando os desenvolvedores a experimentarem. Basta ter cuidado com a memória, o armazenamento e o registro de eventos. Caso necessite de atualização automática, configurações de segurança ou uma implementação mais robusta, será necessária uma configuração adicional.
"Há muito poder aqui, e muita coisa que você pode fazer."
Conclusão
Com a demonstração passo a passo de Tim Corey em seu vídeo , criar um serviço do Windows em C# torna-se acessível e prático. Ao utilizar o Topshelf, um aplicativo de console pode ser convertido em um serviço do Windows totalmente funcional com configuração mínima. Seja para gerenciar arquivos de log, lidar com eventos de banco de dados ou realizar automação, os serviços oferecem uma maneira poderosa e escalável de criar aplicativos .NET Framework ou .NET Core em tempo real e em segundo plano.
Use este tutorial como seu guia completo para entender, criar e instalar serviços com eficiência. Não se esqueça de testar minuciosamente e sempre executar o instalador ou o prompt de comando como administrador.


