Posts Tagged ‘Windows Service’

1 23
01
2012

Cómo crear un Servicio de Windows

Lunes, enero 23rd, 2012

Hoy vamos a realizar un pequeño y rápido repaso de cómo crear un Servicio de Windows, en nuestro caso, desde Visual Studio 2008.

Tomaremos como base el siguiente enlace oficial de microsoft: http://msdn.microsoft.com/es-es/library/9k985bc9(v=VS.90).aspx

Creando Windows Service

En primer lugar, seleccionaremos el tipo de plantilla Windows Service o Servicio de Windows para nuestro proyecto.

Plantilla Visual Studio de Windows Service

Plantilla Visual Studio de Windows Service

Una vez generado el proyecto, Visual Studio generará a partir de plantilla los siguientes archivos:

  • Service1.cs (renombrado por manías del guión como Service.cs)
  • Program.cs
Nuevo proyecto de Windows Service

Nuevo proyecto de Windows Service

En la clase Service.cs (recordemos que originalmente se llamaba Service1.cs), creamos los siguientes métodos:

  • onstart
  • onstop
  • oncontinue

#region "Service Methods"
protected override void OnStart(string[] args)
{
Console.WriteLine("Inicio servicio");
}

protected override void OnStop()
{
Console.WriteLine("Fin servicio");
}

protected override void OnContinue()
{
Console.WriteLine("Servicio en ejecución");
}

#endregion "Service Methods"

En el ejemplo simplemente escribimos por consola una traza del método que estamos ejecutando.

Métodos (OnStart, OnStop, OnContinue) Windows Service

Métodos (OnStart, OnStop, OnContinue) Windows Service

Llegados a este punto, el servicio ya podría arrancar, pero dependiendo de la lógica que deba implementar el servicio, tomaremos diferentes formas de mantener vivo el servicio:

Ejemplo 1: Queremos que nuestro servicio se mantenga a la escucha de recibir mensajes de fuentes externas, el pseudocódigo sería algo así:


while (true) {

listener.receive();

}

Ejemplo 2: Queremos que nuestro servicio ejecute tareas cada x tiempo, para lo cual necesitaríamos un Timer para gestionar la ejecución temporal de dichas tareas. En futuros posts crearemos un ejemplo de este tipo de servicios de windows con timer.

Instalando Windows Service

Vamos a preparar ahora nuestro servicio de windows para que podamos instalarlo, para ello:

1. Añadimos los servicios de instalación, clickando sobre el botón derecho sobre el diseñador de Service y clickamos en “Add Installer” o “Añadir Instalador“.

Agregar instalador en Windows Service

Agregar instalador en Windows Service

2. El paso anterior nos genera un nuevo archivo ProjectInstaller.cs como el de la imagen siguiente, agregando 2 nuevos componentes.

Instalador Servicio de Windows

Instalador Servicio de Windows

En las propiedades de ambos componentes del servicio podremos editar el nombre del servicio, el tipo de arranque (manual, automático o deshabilitado), la cuenta con la que se ejecutará el servicio, etc.

Propiedades instalador Windows Service

Propiedades instalador Windows Service

Por último, vamos a preparar la Instalación del servicio de Windows

Crearnos 2 archivos .bat uno para instalación y otro desinstalación, que ejecutarán el comando InstallUtil

Por ejemplo para instalar y desinstalar respecticamente

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil “C:\Inetpub\wwwroot\myservice\bin\Release\myservice.exe”pause

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil -u “C:\Inetpub\wwwroot\myservice\bin\Release\myservice.exe”pause