Saltar al pie de página
Iron Academy Logo
Aplicación C#
Aplicación C#

Otras categorías

Introducción a los servicios de Windows en C#

Tim Corey
31m 20s

Los servicios de Windows son potentes herramientas del ecosistema .NET, capaces de realizar tareas en segundo plano sin intervención del usuario. Crear un servicio de Windows en C# puede parecer complejo, pero en su vídeo "Intro to Windows Services in C# - How to create, install, and use a service using Topshelf", Tim Corey lo explica paso a paso.

En este artículo, repasaremos ese vídeo, cubriendo cada tema para aportar claridad y continuidad.

Introducción a los servicios de Windows

Tim presenta los servicios de Windows como herramientas de automatización potentes y a menudo olvidadas. Estas aplicaciones están diseñadas para ejecutarse en segundo plano, gestionando tareas sin necesidad de una interfaz de usuario. Algunos ejemplos comunes son el agente de SQL Server o los servicios de Hyper-V.

Tim hace hincapié en la importancia de la práctica para dominar C#. Recomienda descargar el código fuente enlazado en la descripción del vídeo para un aprendizaje práctico.

Creación de una aplicación de demostración de consola

Utilizando Visual Studio, Tim crea un nuevo proyecto de aplicación de consola llamado SimpleHeartbeatService. Aunque podría utilizar una plantilla de proyecto de servicio de Windows, Tim prefiere el enfoque de consola para simplificar la depuración.

"No se trata de qué código pongo aquí, sino de cómo crear el servicio en sí", señala Tim.

¿Qué es un servicio de Windows?

Tim abre la pestaña Servicios en Windows mediante la búsqueda del menú Inicio (basta con escribir "servicios" y pulsar Intro). Explica que los servicios que se ejecutan en segundo plano realizan funciones vitales del sistema operativo, como el escritorio remoto o el servidor MySQL.

El objetivo es crear una nueva entrada en esta lista utilizando código personalizado.

Tipos de proyecto de Visual Studio: Aplicación de consola frente a servicio de Windows

Es posible que tengas la tentación de seleccionar el proyecto Windows Service en Visual Studio, pero Tim explica que es más difícil de depurar. En cambio, una aplicación de consola permite ejecutarla y probarla localmente, lo que reduce la necesidad de conectar un depurador a un servicio en vivo.

"El proyecto de tipo de servicio incorporado dificulta la depuración porque primero hay que instalarlo y luego conectar un depurador"

Añadir Topshelf a través de NuGet

Para simplificar la implementación del servicio, Tim añade Topshelf, un marco de trabajo de código abierto, a través de NuGet. Esta popular biblioteca (con millones de descargas) ayuda a crear servicios de Windows sin código repetitivo.

Pasos:

  1. Haga clic con el botón derecho en Referencias

  2. Seleccione Gestionar paquetes NuGet

  3. Buscar e instalar Topshelf

Escribir la lógica del servicio

Tim crea una clase Heartbeat con dos métodos públicos: Start() y Stop(). Dentro del constructor, configura un System.Timers.Timer para que se ejecute cada segundo.

El evento Elapsed de este temporizador agrega la hora actual a un archivo .txt en la carpeta C:\temp\demos. Esto imita una tarea en segundo plano que se ejecuta continuamente.

"Este temporizador escribirá en un archivo de texto cada segundo, mostrando que el servicio está vivo"

Esto simula el funcionamiento de procesos de larga duración en servicios reales, como el escaneado de carpetas o la impresión de documentos.

Servicio de cableado con Topshelf

Con HostFactory.Run, Tim integra Topshelf en la aplicación:

  • Define la clase Heartbeat

  • Mapas de los métodos Start() y Stop()

  • Configura el servicio para que se ejecute como LocalSystem, concediendo los permisos necesarios

También establece metadatos para el servicio:

  • Nombre del servicio: HeartbeatService

  • Nombre para mostrar: Heartbeat Service

  • Descripción: Utilizado con fines de demostración en un vídeo de YouTube

Ejecutar el servicio como aplicación de consola

Antes de la instalación, Tim ejecuta la aplicación para probarla. El temporizador añade correctamente marcas de tiempo a heartbeat.txt. Utilizando la función de monitorización de Notepad++, muestra actualizaciones en tiempo real.

Instalación y verificación del servicio

Tim copia el .exe y los archivos relacionados de la carpeta bin\Debug a una ubicación permanente (como C:³³demos\HeartbeatService). Utilizando un símbolo del sistema administrativo, ejecuta los siguientes comandos:

SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start

Esto añade el servicio al Gestor de Control de Servicios. Al abrir de nuevo la pestaña Servicios y hacer clic en Actualizar, el servicio ya está visible y en funcionamiento.

"Es muy fácil instalar un servicio, y es muy fácil hacer cosas con un servicio"

Para desinstalar:

SimpleHeartbeatService.exe uninstall
SimpleHeartbeatService.exe uninstall

Recapitulación: Ventajas y consideraciones

Tim recuerda que crear e instalar un servicio con Topshelf es muy sencillo. Sin embargo, advierte de que la escritura infinita de archivos puede provocar problemas de almacenamiento, lo que es un buen recordatorio para una gestión adecuada de los registros.

Ideas de servicio para el mundo real

Tim comparte ideas prácticas para los servicios de Windows:

  • Limpieza de carpetas: Eliminar archivos antiguos de Descargas

  • Organización de imágenes: Ordenar fotos en carpetas por fecha

  • Procesamiento de CSV: Ver una carpeta y auto-importar CSVs en una base de datos

  • Automatización del correo electrónico: Supervisar una mesa de ayuda y enviar notificaciones

Estos ejemplos muestran cómo utilizar los servicios para automatizar tareas en segundo plano e integrarlos con herramientas como SQL Server, OneDrive y programadores de tareas.

Reflexiones finales

Tim concluye animando a los desarrolladores a experimentar. Ten cuidado con la memoria, el almacenamiento y el registro de eventos. Si necesita actualizaciones automáticas, ajustes de seguridad o una implementación más robusta, se requerirá una configuración adicional.

"Aquí hay mucha potencia y muchas cosas que puedes hacer"

Conclusión

Gracias a la demostración paso a paso de Tim Corey en su vídeo, la creación de un servicio Windows en C# resulta accesible y práctica. Gracias a Topshelf, una aplicación de consola puede convertirse en un servicio de Windows totalmente funcional con una configuración mínima. Ya se trate de gestionar archivos de registro, manejar eventos de bases de datos o realizar automatizaciones, los servicios ofrecen una forma potente y escalable de crear aplicaciones .NET Framework o .NET Core en tiempo real y en segundo plano.

Utilice este tutorial como camino completo para comprender, crear e instalar servicios de forma eficaz. No olvides realizar pruebas exhaustivas y ejecutar siempre el instalador o el símbolo del sistema como administrador.

Hero Worlddot related to Introducción a los servicios de Windows en C#
Hero Affiliate related to Introducción a los servicios de Windows en C#

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame