.NET Core 3 presenta una nueva plantilla de proyecto llamada Worker Service. Esta plantilla está diseñada para darle un punto de partida para crear servicios multiplataforma. Como un caso de uso alternativo: proporciona un entorno muy bueno para crear aplicaciones de consola, que es ideal para contenedores y microservicios.

Lea más sobre algunos de los beneficios de usar esta plantilla debajo del gato.

Inyección de dependencia
La plantilla de Worker Service configura un contenedor para la inyección de dependencias de forma predeterminada, listo para usar. Esta es una gran ventaja sobre la plantilla general de la consola.
Agregar servicios incluye actualizar el método
ConfigureServices en el archivo
Program.cs :
Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddTransient<ICustomerService,CustomerService>(); services.AddHostedService<Worker>(); });
Configuracion
La misma configuración del proveedor de configuración para ASP.NET Core se duplica aquí para los Servicios de trabajo. Esto nos brinda un entorno potente y familiar para almacenar información de configuración:
- appsettings.json
- ajustes de aplicaciones. {environment} .json
- Secretos de usuario (solo desarrollo)
- Variables de entorno
- Argumentos de línea de comando
Para obtener más información sobre cada uno de los proveedores, consulte mi artículo anterior publicado
aquí .
Registro
Del mismo modo, los proveedores de registro se configuraron de acuerdo con la configuración predeterminada para ASP.Net Core, proporcionándole los siguientes proveedores:
- Consola
- Depurar
- Fuente del evento
- EventLog (solo en Windows)
Puede agregar proveedores de registro agregando el método
ConfigureLogging al objeto
Host en
Program.cs :
Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddHostedService<Worker>(); }) .ConfigureLogging(logging => { logging.ClearProviders(); logging.AddConsole(); });
Consulte la
documentación de ASP.NET Core para obtener más información.
Clase de inicio de trabajadores
Finalmente, la mayor parte de su código existirá en el archivo
Worker.cs . Existen 3 métodos redefinibles en la clase base
BackgroundService que le permiten relacionarse con el ciclo de vida de la aplicación:
ExecuteAsync es un método abstracto utilizado como punto de entrada principal para su aplicación. Si se interrumpe este método, la aplicación se cierra.
StartAsync: un método virtual que, cuando se anula, se llama cuando se inicia el servicio y se puede usar para configurar recursos una vez.
StopAsync: un método virtual que se llama cuando se cierra la aplicación y es un buen lugar para liberar recursos y eliminar objetos.
Total
La nueva plantilla de Worker Service en .NET Core 3 crea un entorno de alojamiento que es muy adecuado para aplicaciones de consola, microservicios, aplicaciones de contenedor y servicios en segundo plano multiplataforma. Aunque estos beneficios se pueden personalizar independientemente de la plantilla, Worker Service proporciona un entorno de inicio consistente para usar con ASP.NET Core y las aplicaciones de consola.