Service Worker dans .NET Core 3: qu'est-ce que c'est et pourquoi est-il nécessaire

.NET Core 3 introduit un nouveau modèle de projet appelé Worker Service. Ce modèle est conçu pour vous donner un point de départ pour la création de services multiplateformes. Comme cas d'utilisation alternatif: il fournit un très bon environnement pour créer des applications de console, ce qui est idéal pour les conteneurs et les microservices.



En savoir plus sur certains des avantages de l'utilisation de ce modèle sous le chat.



Injection de dépendance


Le modèle Worker Service configure un conteneur pour l'injection de dépendances par défaut, prêt à l'emploi. C'est un énorme avantage par rapport au modèle de console global.

L'ajout de services comprend la mise à jour de la méthode ConfigureServices dans le fichier Program.cs :

Host.CreateDefaultBuilder(args)   .ConfigureServices((hostContext, services) =>   {       services.AddTransient<ICustomerService,CustomerService>();       services.AddHostedService<Worker>();   }); 

La configuration


Les mêmes paramètres de fournisseur de configuration pour ASP.NET Core sont dupliqués ici pour Worker Services. Cela nous donne un environnement puissant et familier pour stocker les informations de configuration:

  1. appsettings.json
  2. appsettings. {environnement} .json
  3. Secrets utilisateur (développement uniquement)
  4. Variables d'environnement
  5. Arguments de ligne de commande

Pour plus d'informations sur chacun des fournisseurs, veuillez consulter mon article précédent publié ici .

Journalisation


De même, les fournisseurs de journaux ont été configurés conformément aux paramètres par défaut d'ASP.Net Core, vous fournissant les fournisseurs suivants:

  1. La console
  2. Déboguer
  3. Source de l'événement
  4. EventLog (uniquement sous Windows)

Vous pouvez ajouter des fournisseurs de journalisation en ajoutant la méthode ConfigureLogging à l'objet Host dans Program.cs :

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

Consultez la documentation ASP.NET Core pour plus d'informations.

Classe de démarrage des travailleurs


Enfin, la majeure partie de votre code existera dans le fichier Worker.cs . Il existe 3 méthodes redéfinissables dans la classe BackgroundService de base qui vous permettent de vous relier au cycle de vie de l'application:

ExecuteAsync est une méthode abstraite utilisée comme point d'entrée principal pour votre application. Si cette méthode est interrompue, l'application se ferme.

StartAsync - Une méthode virtuelle qui, lorsqu'elle est remplacée, est appelée au démarrage du service et peut être utilisée pour définir des ressources une seule fois.

StopAsync - Une méthode virtuelle qui est appelée lorsque l'application se ferme et est un bon endroit pour libérer des ressources et supprimer des objets.

Total


Le nouveau modèle de service de travail dans .NET Core 3 crée un environnement d'hébergement bien adapté aux applications de console, aux microservices, aux applications de conteneur et aux services d'arrière-plan multiplateforme. Bien que ces avantages puissent être personnalisés indépendamment du modèle, Worker Service fournit un environnement de lancement cohérent à utiliser avec ASP.NET Core et les applications de console.

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


All Articles