En este repositorio se busca demostrar dos formas de mantener tareas trabajando en segundo plano en .Net Core, bien sea en un IWebHost o un IHost, para ello, contamos con los siguientes proyectos:
-
LogHostedService: Es una biblioteca de clases y este se encuentra la clase LogHostedService, ésta básicamente lo que hace es que mientras el proceso principal esté corriendo, escribirá un mensaje personalizado en un archivo un texto.
En el proyecto de destino es importante configurar la sección LogHostedServiceSettings, por ejemplo en
appsettings.json
:{ "LogHostedServiceSettings": { "IntervaloSegundos": 10, "Mensaje": "Realicé una operación en segundo plano :)", "RutaArchivo": "C:\\Users\\david\\Documents\\Logs\\LogHostedService.txt" } }
Los valores de la claves indican:
- IntervaloSegundos: Intervalo en segundos para escribir el mensaje en el log.
- Mensaje: Mensaje a esribir en el log.
- NombreArchivo: Ruta completa donde se debe escribir el log.
-
WebApi: Consiste en una Web API generada desde la plantilla por defecto, pero que registra el LogHostedService para que escriba el archivo de log mientras el Web API está ejecutandose en IIS, por ejemplo.
-
WorkerService: Es un proyecto generado a partir de la plantilla por defecto llamada de la misma forma, con la diferencia que registra el LogHostedService para que escriba el archivo mientras el proceso se está ejecutando.
- Background tasks with hosted services in ASP.NET Core: Ejemplo de un Service Worker.
- Host ASP.NET Core in a Windows Service: Registrar un ServiceWorker como servicio de Windows.
- Implement background tasks in microservices with IHostedService and the BackgroundService class: En la sección Deployment considerations and takeaways menciona algunas consideraciones a tener en cuenta.