C# WinServiceBasic1 v1.0.1: Añadimos algunas mejoras al servicio

Después de experimentar un poco con el servicio (C# WinServiceBasic1: Crear un servicio básico en Windows) he prescindido del control de VS que permite instalar el servicio y hacerlo yo mismo a mano con scripts PS (PowerShell), los he guardado en la carpeta Debug y permiten instalar / desinstalar / arrancar / parar / ver estado del servicio.

Proyecto WinServiceBasic1 en GitHub.

WinServiceBasic1_install.ps1

Utilizo el comando New-Service para instalar el servicio, el script previamente copia el ejecutable en C:\bin y borra el servicio si ya existiese previamente.

WinServiceBasic1_delete.ps1

WinServiceBasic1_start.ps1

Start-Service -Name "MyNewService"

WinServiceBasic1_stop.ps1

Stop-Service -Name "MyNewService"

WinServiceBasic1_view.ps1

Get-WmiObject win32_service -Filter "name='MyNewService'"

También he realizado modificaciones en las propiedades del objeto eventLog1 (clase EventLog para escribir logs que se visualizan en el visor de eventos de Windows), es necesario especificar la propiedad Source, normalmente se define como el nombre de la aplicación (“MyNewService” en este caso).

Ajusto algunos parámetros del objeto “MyNewService” (heredado de la clase ServiceBase) para modificar el comportamiento del servicio. La propiedad AutoLog a “False” para que la aplicación no genere eventos por su cuenta.

Además he sobrecargado el método WriteEntry para ilustrar como generar diferentes tipos de eventos (información, error,…):

Ahora los eventos del visor de eventos de Windows proporcionan más información:

Después de probar un rato con EventLog he instalado NLog para generar logs con más flexibilidad (ver “NLog: Sistema de logging gratuito y de código abierto para .Net“)

Referencias externas

 

Anuncios

NLog1 C#: Configuración versión de la aplicación con App.Config

Voy a continuar con  NLog: Sistema de logging gratuito y de código abierto para .Net.

Proyecto en GitHub NLog1.

He añadido algunas mejoras sin relación con el propio NLog,  Algo esencial para el control del proyecto es la gestión de versiones para controlar los cambios realizados (yo sigo este esquema de versionado siempre Semantic Versioning 2.0.0). El fichero App.config del proyecto en VS2012 con sintaxis XML es el candidato ideal para alojar la información de la versión del proyecto añadiendo a mano un nuevo bloque “<appSettings>” y dentro una etiqueta con clave valor :

Otra forma de definir la versión si queremos tratarla posteriormente en nuestra aplicación es definir 3 parámetros clave valor para X.Y.Z de la versión (MAJOR.MINOR.PATCH).

Poder acceder a la información de la versión desde el código de nuestra aplicación es esencial, sobre todo si queremos condicionar la ejecución de un bloque de código especial dependiendo de la versión por ejemplo. Para ello debemos añadir la referencia “System.Configuration” al proyecto y el espacio de nombres a nuestra aplicación:

using System.Configuration;

Para acceder a la variable desde nuestro programa es muy sencillo:

Como conclusión, podemos añadir la información que necesitemos, algunos usos muy comunes es incluir información de conexión a la base de datos o configuración del usuario.

Referencias externas: