Dev (Back & Front)ARTIGO

C#: Criando um serviço Windows

Neste artigo, Thiago Adriano apresenta um passo a passo ensinando a criar um serviço que rode junto com o seu sistema operacional Windows.

C#: Criando um serviço Windows
Imagem: Thiago Adriano

Veja nesse artigo como criar um serviço que rode junto com o seu sistema operacional Windows.

Windows Service

Quem nunca precisou criar um serviço que rode 24/7 dentro de um servidor? Existem muitos cenários, como: Importação de dados em um horário X, migração de arquivos de um server para um outro de backup, etc.

Hoje eu vou mostrar como criar um serviço Windows (Windows Service) e como instalar ele em um servidor Windows Server 2016.

Para os próximos passos será necessário ter o Visual Studio instalado no seu computador. Caso você ainda não tenha, a Microsoft disponibiliza uma versão gratuita chamada Community, que pode ser baixada através deste link.

Abra o seu Visual Studio e siga os seguintes passos: File > New Project > Visual C# > Windows Classic Desktop e selecione Windows Service (.NET Framework). Clique em OK e dê um nome para o seu projeto. Caso tudo esteja ok, você verá a imagem abaixo dentro do seu Visual Studio:

Criando um serviço Windows

O próximo passo será adicionar um instalador para o nosso serviço. Para isso, clique com o botão direito do seu mouse na tela da imagem anterior e selecione Add Instaler. Você será direcionado para uma outra tela de [Design]. Clique em serviceInstaller com o botão direito do seu mouse e selecione properties.

Esse passo abrirá um aba no canto direito da sua IDE. Nela você deve informar os dados do seu serviço, como: Nome, Descrição e o nome do serviço (que aparecerá na listagem de serviços do seu servidor Windows).

Abaixo você tem uma imagem demonstrando como eu preenchi os dados do meu serviço para esse artigo:

Informações de um serviço criado com (Windows Service e C#)

O próximo passo será criar um rotina para o nosso serviço. Para o nosso exemplo, eu irei criar um método que toda vez que o serviço rode, ele também registre a data e o horário em um arquivo .txt, algo como um log.

Abra o arquivo Service.cs e atualize ele com o trecho de código abaixo:

private Timer _timer;
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            _timer = new Timer(CriarLog, null, 0, 120000);
        }


        protected override void OnStop()
        {
        }

        private void CriarLog(object state)
        {

            StreamWriter vWriter = new StreamWriter(@"C:\Logs\log.txt", true);
            vWriter.WriteLine("serviço rodando:" + DateTime.Now);
            vWriter.Flush();
            vWriter.Close();
        }

Analisando esse trecho de código, nós temos:

  • 02: um construtor que inicializará o nosso service (padrão na criação do service)
  • 07: esse método será o primeiro a ser chamado quando o serviço inicializar. Note que ele está chamando um método CriarLog de dois em dois minutos
  • 29: o método (OnStop) é chamado toda vez que o serviço parar
  • 33: nesse método que devemos criar nossas regras de negócio. Eu poderia ter criado ele em uma outra class, mas como é somente um exemplo, eu deixei na mesma

Para instalar o nosso serviço eu irei utilizar o InstallUtil do .NET Framework. Para isso, abra um cmd como Administrador no seu servidor e navegue até o caminho abaixo:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\

Como esse é somente um teste, deixarei o build como Debug, mas caso você já tenha finalizado o seu service e esteja pronto para produção, basta alterar o build de Debug para Release como está na imagem abaixo:

Windows Service Release

Build o seu projeto e em seguida navegue até a pasta bin e copie a pasta Debug. Conforme mencionado acima, nós iremos utilizar ela para instalar o nosso service.

bash
InstallUtil.exe (caminho do seu executável).exe

Caso o seu serviço tenha sido instalado com sucesso, você receberá a mensagem: “Instalação transacionada concluída.”. Abaixo você tem uma imagem demonstrando esse passo:

InstallUtil.exe (Windows Service)

Agora abra os serviços do seu servidor e note que o seu service está la. Para verificar os seus detalhes, dê dois cliques nele. Esse passo abrirá uma janela com as suas propriedades:

Propriedades serviço Windows

Note que ele está com o nome e a descrição que nós configuramos no Visual Studio. Clique em iniciar e vá até o diretório que você escolheu para criação dos seus arquivos de Log. Note que o nosso arquivo está lá.

Windows Service (Log)

Abra o arquivo e note que ele passa pelo método CriarLog e registra no arquivo log.txt de dois em dois minutos. Abaixo você tem uma imagem demonstrando esse passo:

A ideia deste artigo era demonstrar um passo a passo de como criar e publicar um projeto Windows Service. Espero que tenham gostado e até a próxima, pessoal!

Microsoft (MVP), atualmente trabalha como Arquiteto de Software para TV Bandeirantes. Nesses últimos anos, focou nas tecnologias criadas pela Microsoft, mas sempre esteve antenado para as novas tecnologias que estão surgindo no mercado. Em um breve resumo, é uma pessoa apaixonada pelo que faz, tem a sua profissão como hobby.

Ver perfil