Entmystifizierung des neuen .NET Core 3 Worker Service

Premier Developer Consultant Randy Patterson erläutert die Vorteile der Verwendung des neuen Worker Service-Projektprojekts, das in .NET Core 3 eingeführt wurde.

Mit .NET Core 3 wurde eine neue Projektvorlage namens Worker Service eingeführt. Diese Vorlage soll Ihnen einen Ausgangspunkt für plattformübergreifende Dienste bieten. Als alternativer Anwendungsfall bietet es eine sehr schöne Umgebung für allgemeine Konsolenanwendungen, die sich perfekt für Container und Mikrodienste eignet.



Einige der Vorteile der Verwendung dieser Vorlage umfassen die folgenden Bereiche.



Abhängigkeitsinjektion


Die Worker-Service-Vorlage konfiguriert einen standardmäßigen Dependency-Injektionscontainer, den wir verwenden können. Dies ist ein großer Vorteil gegenüber der generischen Konsolenvorlage.

Das Hinzufügen von Diensten umfasst das Aktualisieren der ConfigureServices- Methode in der Datei Program.cs :

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

Konfiguration


Dieselben Konfigurationsanbieter, die für ASP.NET Core eingerichtet wurden, werden hier für Worker Services dupliziert. Dies gibt uns eine leistungsstarke und vertraute Umgebung zum Speichern von Konfigurationsinformationen:

  1. appsettings.json
  2. appsettings. {Environment} .json
  3. Benutzergeheimnisse (nur für die Entwicklung)
  4. Umgebungsvariablen
  5. Befehlszeilenargumente

Weitere Informationen zu den einzelnen Anbietern finden Sie in meinem vorherigen Artikel, der hier veröffentlicht wurde .

Protokollierung


Ebenso wurden Protokollanbieter so konfiguriert, dass sie mit der Standardkonfiguration für ASP.Net Core übereinstimmen, sodass Sie die folgenden Anbieter haben:

  1. Konsole
  2. Debuggen
  3. Ereignisquelle
  4. EventLog (nur unter Windows)

Sie können die Protokollanbieter ändern, indem Sie dem Hostobjekt in Program.cs eine ConfigureLogging- Methode hinzufügen:

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

Weitere Informationen zur Protokollierung finden Sie in der Dokumentation zu ASP.NET Core.

Worker Startup Class


In der Datei Worker.cs befindet sich schließlich der größte Teil Ihres Codes. Es gibt drei überschreibbare Methoden aus der Basisklasse BackgroundService , mit denen Sie den Lebenszyklus Ihrer Anwendung verknüpfen können:

ExecuteAsync - eine abstrakte Methode, die als Haupteinstiegspunkt für Ihre Anwendung verwendet wird. Wenn diese Methode beendet wird, wird Ihre Anwendung beendet.

StartAsync - Eine virtuelle Methode, die beim Starten des Dienstes überschrieben und zum einmaligen Einrichten von Ressourcen verwendet werden kann.

StopAsync - Eine virtuelle Methode, die beim Herunterfahren der Anwendung aufgerufen wird und ein guter Ort ist, um Ressourcen freizugeben und Objekte zu entsorgen.

Zusammenfassung


Mit der neuen Worker-Service-Vorlage in .NET Core 3 wird eine Hosting-Umgebung erstellt, die sich gut für Konsolenanwendungen, Microservices, containerisierte Anwendungen und plattformübergreifende Hintergrunddienste eignet. Obwohl diese Vorteile unabhängig von der Vorlage konfiguriert werden können, bietet die Worker-Service-Vorlage eine konsistente Startumgebung zwischen ASP.NET Core- und Konsolenanwendungen.

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


All Articles