Por que usar Windows Service? E como criar usando o Delphi?
Esse artigo é um compilado de um post realizado no blog oficial da Embarcadero.
Você desenvolvedor já passou pela seguinte situação? Preciso rodar algum processamento em paralelo ao meu sistema.
Pois bem, existem algumas técnicas, como: criar uma aplicação console (que ficará startada pelo usuário), criar uma aplicação GUI minimalista, ou seja, com poucas (ou nenhuma) iteração do usuário ou criar um paralelismo no próprio sistema por meio de threads.
Qualquer uma das opções acima funciona, porém existem alguns riscos e dependendo do cenário onde seu sistema rodará não será tão eficiente essas abordagens. É por isso que venho trazer uma outra alternativa que seria criar uma aplicação para rodar como serviço do Windows.
O que são Serviços do Windows?
Serviços do Windows são programas que são executados em segundo plano, não necessitam de iteração dos usuários e normalmente são iniciados junto com o sistema operacional (isso é configurável, mas vamos pular essa parte por enquanto).
Só para título de curiosidade, aperta as teclas windows+r digite services.msc e pressione o enter. Você verá uma pancada de serviços em execução na sua máquina.
Quando usar uma Aplicação como Serviço?
Antes de você iniciar o desenvolvimento de uma aplicação do tipo serviço você deverá se perguntar:
- Exigirá iteração do usuário final?
- Terá um processamento massivo?
- Redigir a mensagem no programa
- Clicar para enviar
- Aguardar o status de enviado com sucesso
Devo me preocupar com o usuário da Aplicação como Serviço?
Então como não terá iteração posso usar qualquer usuário para rodar a minha aplicação? A resposta para quase tudo na informática é: depende (kkkk). Se a sua aplicação precisar acessar algum recurso protegido pelo sistema operacional, tais como: pastas, arquivos e etc...Você precisará usar um usuário com tal permissão, caso contrário sua aplicação não terá êxito.
Armando posso ser mais chato? Me passa outro exemplo mais prático?
Claro. No artigo oficial o autor comenta sobre um utilitário que precisou desenvolver para verificar o espaço em disco do computador. Vou um pouquinho mais além: imagina um sistema ERP (Gestão Empresarial) ou um sistema de BackOffice, onde o usuário final solicite que ao finalizar uma operação o sistema mande uma mensagem por e-mail ou para o celular do cliente (push notification).
Temos várias formas de desenvolver essa feature. Usar processamento paralelo ou usar o envio de forma síncrona no próprio sistema (esse é menos eficaz - imagina o usuário ter que esperar a mensagem ser enviada).
O primeiro cenário até seria uma boa saída, mas já pensou se o usuário fechar o sistema no momento em que a rotina de envio estiver em execução? Você teria que realizar diversos controles na sua thread e traria uma complexidade desnecessária para o seu negócio.
É aí que vamos para o exemplo, criar uma aplicação para o windows service.
Vamos para o exemplo
Para criar uma aplicação do tipo Windows Service devemos seguir os seguintes passos:
- Menu File -> New -> Other
- Subpasta Delphi -> Pasta Windows -> Escolher o item Windows Service
- E por fim clicar em Ok
Logo em seguida o Delphi perguntará se você deseja habilitar os componentes visuais da sua biblioteca, podemos marcar que sim.
O Delphi criará o seu projeto com uma unit, onde sua classe estará herdando de TService.