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:
Para desarrollar nuestro propio servicio utilizaremos Visual Studio y unos de sus proyectos personalizados para la creación de servicios:
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:
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.
No olvidar llamar a las funciones de inicio y fin del temporizador, en los métodos OnStart() y OnStop() del servicio:
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:
En este momento se nos adicionaran dos nuevas clases a nuestra solución, serviceProcessInstaller1 y serviceInstaller1:
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.
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
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:
Esto es todo, para el próximo post les estaré comentado como depurar este tipo de aplicaciones.
No hay comentarios:
Publicar un comentario