Clique aqui para ler todos os artigos desta edição
Criando um Windows Service no Visual Studio .Net
por Eduardo Miranda
Este artigo discute |
Este artigo usa as seguintes tecnologias: |
· Criando um Windows Service no Visual Studio.Net · Interagindo com um Windows Service |
C#, VS.Net e Winforms Download: fontesWindowsService.zip (113KB) |
Chapéu C#, Windows Services |
|
Windows Services ou NT Services são aplicações que rodam em background no sistema operacional e não têm interações com o usuário. Estes aplicativos podem configurados para iniciar junto com o Windows, portanto são ideais para tarefas que devem ser realizadas sem a intervenção de um usuário, como por exemplo limpar semanalmente um diretório de trabalho ou monitorar a chegada de um arquivo em um determinado diretório.
Os serviços instalados em seu computador podem ser gerenciados através do Services Control Manager (SCM), visto na Figura 1, que pode ser acessado através do Control Panel > Administrative Tools > Services. Além dos servidores, como o IIS e o SQL Server, existem serviços do aplicativo de anti-virus, firewall, etc. Todos realizando trabalhos em background em nosso computador.
Figura 1. O Service Control Manager permite gerenciar os serviços instalados.
A esquerda da lista de serviços estão todos os comandos que podem ser realizados com o serviço, no exemplo da Figura 1 estão disponíveis os comandos de Stop e Restart, mas não está disponível o comando de Pause, mais a frente será possível entender porque e como definir isto. Clicando com o botão direito em cima do serviço desejado e escolhendo a opção Properties, a janela de propriedades se abre e nela é possível consultar e alterar as configurações de segurança, tratamento de erros e inicialização.
O .Net Framework, em conjunto com o Visual Studio.Net, tornou fácil a tarefa de criar, configurar e instalar um Windows Service. O objetivo deste artigo é mostrar passo a passo como isto é feito. Além disto pretende mostrar como um aplicativo .Net pode interagir com o serviço criado, enviando comandos e alterando o seu estado.
Criando o novo projeto
Para criar um Windows Service no Visual Studio.net abra um novo projeto e escolha o template Windows Service, conforme a Figura 2. Este template irá criar um novo projeto contendo um arquivo chamado Service1.cs e mostrará a classe Service1 em modo Design. Clique em “click here to switch to code view” para ver seu código fonte. A classe criada herda da classe abstrata System.ServiceProcess.ServiceBase. Todas as funcionalidades necessárias para um Windows Service já estão implementas nesta classe, facilitando bastante o trabalho.
Figura 2. Escolhendo a template de Windows Service para um novo projeto.
O novo Windows Service está pronto, porém sem nenhuma funcionalidade, o próximo passo é conhecer melhor a propriedades e métodos herdados da ServiceBase e entender como fazer com que o Service execute as tarefas desejadas.
Métodos e Propriedades de um Windows Service
Dois métodos são fundamentais para que o Windows Service execute suas funções, o OnStart e o OnStop. O primeiro é chamado toda vez que o serviço é iniciado e deve preparar o serviço para executar suas tarefas. O segundo é chamado quando o serviço pára, e deve liberar todos os recursos alocados pelo OnStart e preparar o serviço para seu encerramento.
Em um Windows Service, apesar de existir um método construtor, as tarefas que o serviço deve executar ao se iniciar devem ser implementadas no método OnStart, pois o mesmo é chamado toda vez que o serviço é iniciado. É importante frisar que enquanto este método não for sobrescrito o serviço não executará nenhuma tarefa. Estes não são os dois únicos métodos que podem ser sobrescritos em um serviço. A Figura 3 mostra o diagrama de estado de um Windows Service com seus principais métodos. Os métodos são executados entre os estados do serviço.
· OnStart() – Este método é chamado quando o serviço recebe um comando para inciar
· OnStop() – Este método é chamado quando o serviço recebe um comando de parar
· OnPause() – Este método é chamado quando o serviço recebe um comando de pausa.
· OnContinue() – Este método é chamado quando o serviço recebe um comando para sair do estado de Pausa.
· OnShutdown() – Este método é chamado quando o Windows é desligado. Normalmente executa tarefas semelhantes do método OnStop.
· OnCustomCommand(command) – Este método permite que comandos específicos sejam executados pelo Windows Service. Mais adiante sua utilização será detalhada e exemplificada.
· OnPowerEvent(powerStatus) – Este método é executado quando o computador entra em modo de suspensão ou indica que a bateria está fraca. Pode ser utilizado em aplicativos especialmente desenvolvidos para notebooks.
...