Desmitificando el nuevo .NET Core 3 Worker Service

El consultor de desarrolladores premier Randy Patterson analiza los beneficios de usar el nuevo proyecto de proyecto del Servicio de trabajadores introducido en .NET Core 3.

.NET Core 3 introdujo una nueva plantilla de proyecto llamada Worker Service. Esta plantilla est谩 dise帽ada para darle un punto de partida para servicios multiplataforma. Como un caso de uso alternativo, configura un entorno muy agradable para aplicaciones de consola general que es perfecto para contenedores y microservicios.



Algunos de los beneficios de usar esta plantilla incluyen las siguientes 谩reas.



Inyecci贸n de dependencia


La plantilla de Worker Service configura un contenedor de inyecci贸n de dependencia predeterminado, listo para que lo usemos. Este es un gran beneficio en comparaci贸n con la plantilla gen茅rica de la consola.

Agregar servicios implica 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 de proveedores de configuraci贸n para ASP.NET Core se duplica aqu铆 para Worker Services. Esto nos brinda un entorno potente y familiar para almacenar informaci贸n de configuraci贸n:

  1. appsettings.json
  2. ajustes de aplicaciones. {Environment} .json
  3. Secretos de usuario (solo para desarrollo)
  4. Variables de entorno
  5. Argumentos de la l铆nea de comando

Para obtener informaci贸n adicional sobre cada uno de los proveedores, consulte mi art铆culo anterior publicado aqu铆 .

Registro


Del mismo modo, los proveedores de registro se han configurado para que coincidan con la configuraci贸n predeterminada de ASP.Net Core, ofreci茅ndole los siguientes proveedores:

  1. Consola
  2. Depurar
  3. Fuente del evento
  4. EventLog (solo cuando se ejecuta en Windows)

Puede modificar los proveedores de registro agregando un m茅todo ConfigureLogging al objeto Host en Program.cs :

 Host.CreateDefaultBuilder(args)  .ConfigureServices((hostContext, services) =>  {      services.AddHostedService<Worker>();  })  .ConfigureLogging(logging =>  {      logging.ClearProviders();      logging.AddConsole();  }); 

Para obtener informaci贸n adicional sobre el registro, consulte la documentaci贸n de ASP.NET Core.

Clase de inicio de trabajadores


Finalmente, el archivo Worker.cs es donde existir谩 la mayor parte de su c贸digo. Existen 3 m茅todos reemplazables de la clase base BackgroundService que le permiten vincularse al ciclo de vida de su aplicaci贸n:

ExecuteAsync: un m茅todo abstracto utilizado como punto de entrada principal para su aplicaci贸n. Si este m茅todo se cierra, entonces su 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 la configuraci贸n de recursos por 煤nica vez.

StopAsync: un m茅todo virtual que se llama cuando la aplicaci贸n se est谩 cerrando y es un buen lugar para liberar recursos y deshacerse de objetos.

Resumen


La nueva plantilla de servicio para trabajadores en .NET Core 3 crea un entorno de alojamiento que es adecuado para aplicaciones de consola, microservicios, aplicaciones en contenedores y servicios en segundo plano multiplataforma. Si bien estos beneficios se pueden configurar independientemente de la plantilla, la plantilla de Worker Service nos brinda un entorno de inicio consistente entre las aplicaciones ASP.NET Core y Console.

Source: https://habr.com/ru/post/480048/


All Articles