martes, 11 de febrero de 2014

Creando servicios en .NET

Hola, en este post le voy a explicar cómo crear servicios de Windows con .NET. ¿Pero qué son los servicios?

Los servicios de Windows son aplicaciones que corren en segundo plano y no necesitan la interacción del usuario. De hecho ni siquiera tienen interfaz visual. Son ideales ejecutar tareas de larga duración que se ejecutan cada cierto intervalo de tiempo o al desencadenarse una acción determinada en nuestra PC. Pueden ver la definición formal que dan nuestros amigos de Microsoft acá: http://msdn.microsoft.com/es-es/library/d56de412%28v=vs.110%29.aspx

Entre los beneficios más importantes de los servicios están que se ejecutan automáticamente al inicio de Windows, incluso sin la necesidad de que un usuario se haya logado, además permiten escoger el tipo de cuenta de sesión para iniciar, lo que nos la posibilidad de administrar los permisos y privilegios con que se ejecutará el servicio.

¿Cómo podemos ver un listado de todos los servicios que están ejecutándose en nuestra PC?, muy sencillo, en Microsoft Windows 7, pulsamos el botón "Iniciar" - "Panel de control" - "Herramientas administrativas" - "Servicios". Y nos mostrara una pantalla como esta con todos los servicios instalados en nuestra PC:

clip_image002

Para desarrollar nuestro propio servicio utilizaremos Visual Studio y unos de sus proyectos personalizados para la creación de servicios:

clip_image004

Después de crear el proyecto estamos listos para desarrollar nuestro servicio. Vamos a desarrollar un servicio de ejemplo que escriba en un fichero cada 15 segundos el texto:

“Mi Primer servicio!!!!!!”

Seleccionamos el fichero Service1.cs en nuestro explorador de soluciones y tendremos algo parecido a esto:

clip_image006

Como se puede observar tenemos una clase que hereda de ServiceBase que es la clase que provee las interfaces de los métodos de OnStart() y OnStop() que son los invocados automáticamente cuando se inicia y termina el servicio. Otro punto de interés son las propiedades de los servicios entre ellas podemos destacar:

· AutoLog: Indica si los comandos Iniciar, Detener, Pausar y Continuar deben notificarse en el registro de eventos.

· CanPauseAndContinue: Obtiene o establece un valor que indica si se puede pausar y reanudar el servicio.

· CanStop: Obtiene o establece un valor que indica si puede detenerse el servicio una vez se ha iniciado.

El listado completo de todas las propiedades y sus especificaciones las pueden encontrar en: http://msdn.microsoft.com/es-es/library/system.serviceprocess.servicebase%28v=vs.110%29.aspx

En la siguiente imagen se puede ver que no hay mucha complicación, creamos un componente Timer nos registramos al evento Elapsed y cada vez que pase el tiempo configurado abrimos un fichero y escribimos en él.

clip_image008

No olvidar llamar a las funciones de inicio y fin del temporizador, en los métodos OnStart() y OnStop() del servicio:

clip_image010

Justo ahora estamos listos para hacer el instalador del servicio, esta operación es muy sencilla de realizar tan solo con oprimir click derecho sobre la vista de diseño del servicio y nos saldrá una opción para la creación del instalador:

clip_image012

En este momento se nos adicionaran dos nuevas clases a nuestra solución, serviceProcessInstaller1 y serviceInstaller1:

clip_image014

Configuramos las propiedades del instalador como muestran las siguientes imágenes. Acá podemos configurar el nombre que tendrá el servicio, la descripción, el tipo de cuenta que iniciara el servicio y otras propiedades que nos podrían ser útiles.

clip_image016 clip_image018

Ya ahora lo que nos resta es instalar nuestro servicio, para ello utilizaremos la linea de comandos del Visual Studio. La podemos encontrar en "Iniciar" - "Todos los Programas" - "Microsoft Visual Studio 2010" - "Visual Studio Tools" - "Visual Studio 2010 Command Prompt". La ejecutamos en modo administrador y utilizando el aplicación InstallUtil.exe instalamos nuestro servicio.

Para instalar : InstallUtil.exe miServicio.exe

Para desintalar : InstallUtil.exe /u miServicio.exe

clip_image020

Despues de instalado el servicio lo mandamos a iniciar, en caso que no lo este, y si todo va bien pues podremos ver como cada 15 segundos se adiciona el texto en nuestro fichero:

clip_image022

clip_image024

Esto es todo, para el próximo post les estaré comentado como depurar este tipo de aplicaciones.


¿Te ha gustado este Post? Compártelo con tus amigos.

No hay comentarios:

Publicar un comentario

IconIconIcon