segunda-feira, 19 de junho de 2017

C#: Desenvolvendo Serviços Windows

Olá, hoje vamos ver como desenvolver serviço para Windows usando o C# no Visual Studio e entender o seu ciclo de vida.

1. Criando um Novo Projeto

Vamos criar um novo projeto, como qualquer outro projeto do Visual Studio, bastando escolher a opção Serviços Windows:


Coloque o nome e onde vai ser salvo e clique me OK.

O Visual Studio vai criar o projeto. Por padrão, a classe principal responsável pelos procedimentos do projeto vai ser o Service1.cs, podendo renomeá-lo para o nome que desejar, lembrando de atualizar a referência no Program.cs, que é responsável de inicializar o serviço.

2. Estrutura da Classe do Serviço


Analisando o arquivo "Service1.cs", você perceberá que ele é dividido em "Service1.cs", que pode ser exibido em modo Design ou em código, e "Service1.Designer.cs".
No modo design, você pode arrastar componentes que será utilizado no serviço, como um Timer.

Toda classe que representa um Serviço Windows herda a classe ServiceBase e possui dois métodos: onStart e onStop.

O método onStart é onde você INICIARÁ os processos que o serviço executará, note a ênfase no iniciará. Este método deve apenas iniciar os processos e retornar o mais rápido possível, logo, os processos em si deverão ser executados em threads separados deste método.

Já o método onStop será executado é onde você deve encerrar e liberar os recursos, pois quando chamado, significa que o serviço foi parado. 

3. Instalando e Testando o Serviço

Um serviço não pode ser testado a partir do Visual Studio como outros tipos de aplicativo: você deve primeiro instalar o serviço no computador, para então, atrelá-lo ao depurador do Visual Studio.

3.1 Instalar o serviço


Para instalar o serviço, primeiro temos que implementar o instalador. No modo Design do serviço, podemos implementar automaticamente clicando como o botão direito na área e selecionar no menu a opção "Adicionar Instalador".



Dois objetos serão adicionados, um ServiceInstaller, responsável por instalar o serviço, e um ServiceProcessInstaller, que instala o executável do serviço. Ambos possuem propriedades que podem ser alteradas conforme a necessidade, que é um assunto para outra hora.

Agora que os instaladores foram adicionados, compile o projeto. Agora vamos instalar o serviço propriamente dito. Abra o Visual Studio Command Prompt (sempre no modo Administrador) e usaremos o comando "installutil" para instalar o serviço. O comando tem a seguinte sintaxe:

installutil [caminho]

onde [caminho] é a localização do executável do serviço, então o comando ficará parecido com a seguinte forma:

installutil c:\pasta\instalador.exe

Uma vez instalado, você já pode gerenciá-lo no Gerenciador de Serviços do Windows, portanto, abrá-o e inicie o serviço que acabou de criá-lo.

3.2 Testando o Serviço

Uma vez o serviço instalado, você pode atrelar o processo do serviço ao depurador. Para isso, no Visual Studio (neste caso, iniciado com permissão de administrador), vá em Depurar>Anexar ao Processo (ou simplesmente CTRL+ALT+P), e na tela que abrir, procure o processo do serviço (caso não encontre, certifique-se que se a caixa "Mostrar processos de todos os usuários" está marcada).
Com isso, tenha um bom debug,

Nenhum comentário:

Postar um comentário