Como criar serviços do Windows com o Visual Basic.NET

O objetivo deste Tutorial é mostrar como criar serviços do Windows com o Visual Basic.NET: a criação de serviços do Windows (Windows Services) é uma novidade no Visual Basic.NET. Em nosso tutorial desenvolveremos um serviço simples, que criará eventos no EventLog ...

04/06/03h

Diminuir o tamanho das letras Aumentar o tamanho das letras
Microsoft .NET

O objetivo deste TM é mostrar como criar serviços do Windows com o Visual Basic.NET. A criação de serviços do Windows (Windows Services) é uma novidade no Visual Basic.NET.

Em nosso tutorial desenvolveremos um serviço simples, que criará eventos no EventLog. Para que você entenda o desenvolvimento é recomendado que possua bons conhecimentos de programação e Visual Basic.NET.

Software utilizado:
-
Microsoft Visual Studio.NET 2003 Enterprise Architect (também conhecido como "Everett" ou versão 7.1) - Beta Final

Requisitos do sistema: (Para instalação completa, que contém todas as linguagens e recursos)
- Processador Intel Pentium II /AMD K6-2 a partir de 450 Mhz (Pentium III/AMD Duron a partir de 600 Mhz recomendados)
- Memória RAM: 96 MB para Windows 2000 Pro (Recomendado 128 MB)
                       192 MB para Windows 2000 Server (Recomendado 256 MB)
                        96 MB para Windows XP Home (Recomendado 160 MB)
                       192 MB para Windows XP Pro (Recomendado 256 MB)
                       192 MB para Windows Server 2003 (Recomendado 256 MB)
- 4.1 GB no drive da instalação e 900 MB no drive do sistema
- Sistema Operacional: Windows 2000*, Windows XP ou Windows Server 2003
    Obs: É possível executar aplicações desenvolvidas com o VS.NET no Windows 98/Me/NT 4 mas não é possível desenvolver as aplicações nesses sistemas.
    * o Windows 2000 Datacenter Server não é suportado.     
- Drive de CD-ROM ou DVD-ROM
- Placa de vídeo e monitor que suporte resolução de 800x600 e 256 cores (Recomendado High Color 16-Bit)
- Mouse

Iniciando:
Abra o Visual Studio.NET e crie um novo projeto. Ele deve ser do tipo "Visual Basic Projects" e o Template será "Windows Service":


New Project

Dê o nome de "MeuService" para o projeto. Clique em OK.

O IDE apresentará a tela de design, que será totalmente branca, com uma mensagem no centro. Repare que na janela Properties existem algumas propriedades do nosso serviço que podemos alterar, as principais são:

Name: Nome do Serviço no projeto;
CanPauseAndContinue: se for "True" o objeto pode ser parado e iniciado novamente (essa opção está dentro de Dynamic Properties);
CanShutDown: se for "True" o serviço pode ser desativado;
CanStop: se for "True" o serviço pode ser parado;
Service Name: o nome do serviço no Windows.

Em "Name" e em "Service Name" digite "MeuService". Para acessar o código clique duas vezes num espaço vazio. Note que o IDE já criou os eventos básicos "OnStart" e "OnStop". O primeiro ocorre quando o serviço é iniciado e o segundo quando ele é parado. Digite o seguinte código:

Protected Overrides Sub OnStart(ByVal args() As String)
' Add code here to start your service. This method should set things
' in motion so your service can do its work.

EventLog.WriteEntry("Fórum do BABOO, o melhor fórum de informática do Brasil", System.Diagnostics.EventLogEntryType.Information)

End Sub

Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your service.

EventLog.WriteEntry("O serviço parou!", System.Diagnostics.EventLogEntryType.Error)
End Sub

Observe que quando o evento iniciar será escrito no EventLog a mensagem "Fórum do BABOO, o melhor fórum de informática do Brasil", sendo que após a vírgula deve-se colocar o tipo de evento:

System.Diagnostics.EventLogEntryType.Error - significa que a mensagem é de um erro;
System.Diagnostics.EventLogEntryType.FailureAudit - significa que ouve uma falha de logon;
System.Diagnostics.EventLogEntryType.Information - significa que a mensagem é uma informação.
System.Diagnostics.EventLogEntryType.SuccessAudit - significa que foi realizado logon com sucesso;
System.Diagnostics.EventLogEntryType.Warning - significa que é uma mensagem de alerta.

Observação Importante: Quando mudamos o nome do Serviço, por algum bug do IDE, existe um lugar no código em que ele não é alterado. Para chegar até lá pressione F5, o IDE detectará um erro. Para acessar a linha do erro clique duas vezes sobre o item "Type 'Service1' is not defined" na janela "Task List" (que será apresentada automaticamente após o erro):


Task List

O Visual Studio.NET o levará para a linha do erro e selecionará a expressão "Service1" e você deve substituí-la por "MeuService".

A seguir devemos criar dois objetos : "ServiceInstaller" e "ServiceProcessInstaller", que são responsáveis por algumas configurações do serviço como o timo de inicialização entre outras. Para fazer isso você deve criar uma classe.

Digite o seguinte código logo após a expressão "End Class" da classe "MeuService" (note que então você terá duas classes dentro do arquivo):



<System.ComponentModel.RunInstaller(True)> Public Class ProjecInstaller
    Inherits System.Configuration.Install.Installer

Public Sub New()

MyBase.New()

Dim SPInstaller As New System.ServiceProcess.ServiceProcessInstaller
Dim SInstaller As New System.ServiceProcess.ServiceInstaller

SPInstaller.Account = ServiceAccount.LocalSystem 'define que o processo será criado na conta do sistema local

SInstaller.StartType = ServiceStartMode.Automatic 'o serviço se iniciará automaticamente
SInstaller.ServiceName = "MeuService" 'nome do serviço no windows

Installers.Add(SInstaller) 'instalando o serviço
Installers.Add(SPInstaller) 'instalando o processo

End Sub

End Class



O objeto "ServiceInstaller" define as configurações do serviço e o instala no sistema. Oobjeto "ServiceProcessInstaller" é responsável pelo processo no qual o serviço será executado. É necessário compilar o serviço. Para isso clique no menu "Build" e depois em "Build MeuService":


Build MeuService

Para instalar o serviço no sistema é necessário um utilitário que é instalado com o .NET Framework, chamado "InstallUtil.exe", ele está no diretório "C:\Windows\Microsoft.NET\Framework\v1.1.4322" - note que no caso da última pasta (v1.1.4322) o nome pode variar dependendo da versão do .NET Framework instalada.

Copie o arquivo .exe do nosso serviço (MeuService.exe), que está na pasta "\bin" do local onde você escolheu salvar o projeto, para a pasta já citada onde fica o arquivo "InstallUtil.exe".

Após isso, clique no menu Iniciar do Windows e em "Executar...", digite "cmd" e confirme. Navegue até o diretório "C:\Windows\Microsoft.NET\Framework\v1.1.4322" e então digite "installutil.exe MeuService.exe" para instalar o serviço ou "installutil.exe /u MeuService.exe" para desinstalá-lo.

O processo de instalação leva poucos segundos.

Para conferir se seu serviço foi corretamente instalado abra a ferramenta Services (ou Serviços) em Administrative Tools (ou Ferramentas Administrativas) e procure pelo nome "Meu Service". Veja abaixo (clique na imagem para vê-la por inteiro):


Serviço já instalado



Propriedades do serviço

Para verificar os eventos criados no log, clique em Start nas propriedades do serviço e depois que ele for inicializado clique em Stop. Abra o Event Viewer (ou Visualizador de Eventos) em Administrative Tools (ou Ferramentas Administrativas). Veja abaixo (clique na imagem para vê-la por inteiro):


Logs do serviço

O evento cujo tipo é Information ocorre quando o serviço é iniciado, se o tipo é Error ocorre quando o serviço foi parado. Clique duas vezes nos eventos para ver suas mensagens:


Propriedades do evento de incialização



Propriedades do evento de parada

Ao verificar os eventos em seu computador verá que existem mais dois eventos do tipo Information que ocorrem quando o serviço é inicializado e parado, esses eventos são criados pelo próprio sistema operacional.

Conclusão
Este tutorial mostrou como criar um serviço do Windows: aqui criamos um serviço bem simples pois sua única função é escrever eventos no log toda vez que é parado ou iniciado (algo que o próprio Windows faz). Mas note que através desse exemplo você pode expandir muito a atuação do serviço.

Os serviços do Windows podem fazer inúmeras tarefas como: criar um evento no log a cada determinada ação do usuário no sistema, chamar outros serviços e/ou outras aplicações, executar scripts, entre outras funções ;) ...


Marcas Registradas
Visual Basic.NET, Visual Studio.NET, Windows são marcas registradas da Microsoft Corporation.
Todos os demais nomes registrados, marcas registradas ou direitos de uso citados neste TM pertencem a seus respectivos proprietários.

 

Autor original:  ClawHammer
Direitos Autorais:  BABOO




imprima este artigo
envie este artigo via e-mail

 

Artigos relacionados


Mais Notícias desta Área

Últimas Notícias
 
 Software  |  Hardware  |  Segurança  |  Tecnologia  |  Tutoriais  |  Download  |  Web  | Desenvolvimento  |  Fórum 
 Mundo Corporativo  |  Carreira  |  Mercado  |  Telecom  |  Servidores  |  Tecnologia 
    BABOO é um site brasileiro de TI focado em informática, tecnologia, software,hardware, tutoriais e downloads, e soluções de dúvidas através do nosso fórum.

 

Artigos do BABOO