Der Windows-Dienst in .NET Core ist eine spezielle Anwendung, die im Hintergrund ausgeführt wird und keine Benutzeroberfläche hat. Sie sind sehr nützlich, wenn Sie einen langlebigen Prozess erstellen möchten, der Systemaufgaben bedient oder asynchrone Vorgänge im Hintergrund ausführt. Das Erstellen eines Windows-Dienstes mit .NET Core ermöglicht die Portabilität von Code und die Ausführung auf verschiedenen Betriebssystemen.
Sie müssen einige Schritte ausführen, um einen Windows-Dienst in .NET Core zu erstellen. Zuerst müssen Sie ein Anwendungsprojekt erstellen und das Microsoft-Paket installieren.Extensions.Hosting.WindowsServices und fügen Sie Code hinzu, der als Dienst ausgeführt wird. Fügen Sie dann Code hinzu, der den Lebenszyklus des Dienstes steuert, indem Sie die IHostLifetime-Schnittstelle implementieren. In diesem Code können Sie angeben, welcher Code ausgeführt werden soll, wenn der Dienst gestartet, beendet oder beendet wird.
Anmerkung: Der .NET Core-Dienst kann gleichzeitig mit anderen Anwendungen ausgeführt werden und im Hintergrund auf dem Computer des Benutzers ausgeführt werden. Dies ist nützlich für Prozesse, die keine kontinuierliche Benutzerinteraktion erfordern.
Nachdem Sie einen Dienst erstellt und konfiguriert haben, können Sie ihn über die Befehlszeile oder die Windows-Dienstverwaltungstools auf dem Computer installieren. Nach der Installation des Dienstes kann der Dienst manuell gestartet und angehalten und beim Start des Betriebssystems automatisch ausgeführt werden.
Erstellen von Windows Service net core: Ein Leitfaden für Anfänger
Das Erstellen eines Dienstes in .NET Core beginnt mit dem Erstellen eines neuen Projekts. Öffnen Sie dazu eine Eingabeaufforderung oder ein Terminal und führen Sie den folgenden Befehl aus:
dotnet new worker -n MyWorkerService
Mit der Option -n können Sie einen Projektnamen angeben. Sie können einen beliebigen Namen für Ihr Projekt auswählen.
Navigieren Sie nach dem Erstellen des Projekts mit dem folgenden Befehl in das Verzeichnis des Projekts:
Jetzt müssen Sie eine Klasse erstellen, die Ihren Dienst darstellt. Erstellen Sie eine neue Datei mit dem Namen Worker.cs und fügen Sie den folgenden Code hinzu:
using Microsoft.Extensions.Hosting;using Microsoft.Extensions.Logging;using System;using System.Collections.Generic;using System.Linq;using System.Threading;using System.Threading.Tasks;namespace MyWorkerService _logger;public Worker(ILogger logger)protected override async Task ExecuteAsync(CancellationToken stoppingToken)>>>
Die Worker-Klasse erbt die BackgroundService-Klasse vom Microsoft-Namespace.Extensions.Hosting . Diese Klasse bietet grundlegende Funktionen zum Erstellen von Hintergrunddiensten. In der ExecuteAsync-Methode können Sie Ihren Code hinzufügen, der im Hintergrund ausgeführt wird.
Als nächstes müssen Sie der Datei mit dem Namen Program Code hinzufügen.cs , damit Ihr Dienst als Windows-Dienst ausgeführt und ausgeführt wird:
using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Hosting;using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace MyWorkerServicepublic static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).UseWindowsService().ConfigureServices((hostContext, services) =>();>);>>
Dieser Code verwendet die CreateHostBuilder-Methode, die den Host-Generator erstellt. Die Build-Methode erstellt dann einen Host und führt ihn aus, um Ihre Anwendung auszuführen. Mit der UseWindowsService-Methode kann Ihre Anwendung als Windows-Dienst ausgeführt werden.
Führen Sie schließlich den folgenden Befehl aus, um den Dienst zu erstellen:
dotnet publish -c Release -r win-x64 -o ./publish
Dieser Befehl erstellt eine ausführbare Datei Ihres Dienstes im Ordner publish Ihres Projekts.
Jetzt können Sie den Dienst auf dem System installieren und ausführen. Öffnen Sie eine Eingabeaufforderung als Administrator, und führen Sie den folgenden Befehl aus:
sc create MyWorkerService binPath= "\publish\MyWorkerService.exe"
Ersetzen Sie den Pfad zu Ihrem Projekt.
Führen Sie nach dem Erstellen des Dienstes den folgenden Befehl aus, um den Dienst zu starten:
sc start MyWorkerService
Das ist alles! Ihr Dienst wird nun gestartet und führt seine Aufgaben im Hintergrund aus.
In diesem Tutorial haben wir die Grundlagen zum Erstellen eines Dienstes in .NET Core behandelt. Jetzt können Sie Ihren Service entsprechend Ihren Anforderungen anpassen und erweitern.
Vorbereitung der Umgebung
Bevor Sie mit dem Erstellen und Konfigurieren eines Windows-Diensts in .NET Core beginnen, müssen Sie die Arbeitsumgebung vorbereiten und die erforderlichen Tools installieren. Im Folgenden sind die Schritte aufgeführt, die erforderlich sind, um die Umgebung erfolgreich vorzubereiten.
- Installieren Sie das .NET Core SDK auf Ihrem System. Sie können dies tun, indem Sie das Installationsprogramm von der offiziellen Website herunterladen dotnet.microsoft.com/download und folgen Sie den Installationsanweisungen.
- Installieren Sie Visual Studio Code oder eine andere von Ihnen bevorzugte integrierte Entwicklungsumgebung (IDE) für die Entwicklung von .NET Core-Anwendungen.
- Installieren Sie Git auf Ihrem System. Sie können das Installationsprogramm von der offiziellen Website herunterladen git-scm.com/downloads .
- Stellen Sie sicher, dass Sie die aktuelle Version von Git installiert haben, indem Sie den Befehl git --version an der Eingabeaufforderung oder im Terminal ausführen.
Nachdem Sie alle diese Schritte ausgeführt haben, ist Ihre Arbeitsumgebung bereit, einen Windows-Dienst in .NET Core zu erstellen und zu konfigurieren.
Erstellen eines Projekts in Visual Studio
Um einen Windows-Dienst in .NET Core mithilfe von Visual Studio zu erstellen, müssen Sie die folgenden Schritte ausführen:
- Öffnen Sie Visual Studio, und wählen Sie Neues Projekt erstellen aus.
- Geben Sie bei der Suche nach Projektvorlagen "Windows-Dienst" ein und wählen Sie "Windows-Dienst (.NET Core)" aus.
- Geben Sie den Projektnamen und den Pfad an, in dem die Projektmappe erstellt werden soll, und klicken Sie auf Neu.
- Nachdem Sie das Projekt erstellt haben, wird die Datei Program geöffnet.cs. Diese Datei enthält einen Einstiegspunkt für den Windows-Dienst.
In der Programmdatei.die cs-Methode Main ist der Einstiegspunkt für den Dienst. Bei dieser Methode müssen Sie den Dienst initialisieren und starten.
using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Hosting;namespace MyServicepublic static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).UseWindowsService().ConfigureServices((hostContext, services) =>();>);>>
In diesem Beispiel wird die Erweiterung UseWindowsService() verwendet, mit der Sie den Dienst als Windows-Dienst starten können. Die ConfigureServices() -Methode wird aufgerufen, um die erforderlichen Dienste zu konfigurieren, in diesem Fall wird der Dienst selbst hinzugefügt.
Nachdem Sie das Projekt in Visual Studio konfiguriert haben, müssen Sie Ihre Dienstlogik implementieren, die die erforderlichen Aufgaben beim Starten und Ausführen des Dienstes ausführt.
Konfigurieren des Dienstes
Wenn Sie einen Windows-Dienst unter .NET Core erstellen, ist es wichtig, den Dienst ordnungsgemäß zu konfigurieren. Alle vom Dienst erwarteten Einstellungen und Einstellungen müssen entsprechend den Anforderungen der Anwendung angegeben und konfiguriert werden.
Sie können den Dienst mithilfe einer Konfigurationsdatei konfigurieren, die alle erforderlichen Einstellungen enthält. Die Konfigurationsdatei kann sowohl im XML- als auch im JSON-Format erstellt werden. Sie können die Konfigurationsbibliothek verwenden, um Parameter aus einer Konfigurationsdatei in .NET Core zu lesen, die die Werte automatisch liest und im Anwendungscode darauf zugreifen kann.
Mithilfe einer Konfigurationsdatei können Sie Einstellungen wie den Port angeben, an dem der Dienst eingehende Anforderungen abhören soll, die Adresse der Datenbank oder andere anwendungsspezifische Einstellungen. Sie können auch Sicherheits-, Autorisierungs-, Journaleinstellungen und andere Einstellungen angeben, die sich auf den Dienst auswirken können.
Die Möglichkeit, den Dienst über eine Konfigurationsdatei zu konfigurieren, macht ihn flexibler und benutzerfreundlicher. Wenn Sie die Einstellungen ändern möchten, bearbeiten Sie einfach die Konfigurationsdatei, anstatt den Dienst neu zu kompilieren und erneut zu veröffentlichen. Mit diesem Ansatz können Sie den Dienst problemlos konfigurieren, wenn er in eine andere Umgebung verschoben oder die Anwendungsanforderungen geändert werden.
Durch die effiziente Konfiguration eines Dienstes in .NET Core können Sie seine Einstellungen und Einstellungen flexibel an die Anwendungsanforderungen anpassen. Die Verwendung einer Konfigurationsdatei ermöglicht eine einfache Änderung der Einstellungen, ohne dass der Dienst neu kompiliert und neu gestartet werden muss.
Verwalten des Dienstes
Verwalten eines Diensts über die Befehlszeile
.NET Core verfügt über ein integriertes Dienstprogramm "sc" zur Verwaltung von Diensten. Im Folgenden sind einige grundlegende Befehle zum Verwalten des Dienstes aufgeführt:
- sc create [dienstname] binPath=[pfad zu der ausgeführten Datei] - erstellt einen neuen Dienst mit dem angegebenen Namen und Pfad zur ausführbaren Datei.
- sc start [dienstname] - startet den Dienst mit dem angegebenen Namen.
- sc stop [dienstname] - beendet den Dienst mit dem angegebenen Namen.
- sc delete [dienstname] - löscht den Dienst mit dem angegebenen Namen.
Um beispielsweise einen Dienst mit dem Namen "MyService" und einer ausführbaren Datei in einem Ordner zu erstellen "C:\MyService\MyService .exe", können Sie den Befehl ausführen:
sc create MyService binPath=C:\MyService\MyService.exe
Verwalten eines Dienstes mithilfe einer API
Sie können die von .NET Core bereitgestellten APIs verwenden, um den Dienst weiter zu verwalten. Mit diesen APIs können Sie den Dienst programmgesteuert verwalten, einschließlich Starten, Stoppen, Anhalten und Fortsetzen des Dienstes.
Hier ist ein Beispielcode zum Starten und Beenden des Dienstes:
using System; using System.ServiceProcess; public class MyService : ServiceBase < static void Main() < ServiceBase.Run(new MyService()); >protected override void OnStart(string[] args) < // Код для запуска службы >protected override void OnStop() < // Код для остановки службы >>
In den spezifischen Methoden 'onStart` und 'onStop' können Sie den gesamten Code platzieren, der zum Starten und Stoppen des Dienstes erforderlich ist.
Dies ist ein einfaches Codebeispiel und Sie können es an Ihre Bedürfnisse und Anforderungen anpassen.
Zusätzliche Funktionen und Verbesserungen
Das Erstellen eines Dienstes in .NET Core bietet Entwicklern mehr Flexibilität und Komfort bei der Arbeit mit dem Windows-Betriebssystem. Hier sind einige zusätzliche Funktionen und Verbesserungen, die beim Erstellen des Dienstes berücksichtigt werden sollten:
- Verwalten des Dienststarts: Mit .NET Core können Sie das Verhalten eines Dienstes beim Starten, Stoppen und Neustarten anpassen. Entwickler können angeben, ob der Dienst beim Start des Betriebssystems automatisch gestartet werden soll und welche Aktionen ausgeführt werden sollen, wenn der Dienst beendet wird.
- Arbeiten mit der Konfiguration: .NET Core bietet praktische Tools zum Arbeiten mit der Dienstkonfiguration. Entwickler können Konfigurationsdateien, Umgebungsvariablen oder andere Datenquellen zum Konfigurieren von Diensteinstellungen verwenden. Dadurch können Sie den Dienst flexibel konfigurieren, ohne den Quellcode ändern zu müssen.
- Ihr eigener vorlagenbasierter Dienst: Sie können Ihren eigenen Dienst basierend auf einer Vorlage erstellen, die Ihren Anforderungen entspricht. Auf diese Weise können Sie den Dienst schnell und einfach an die spezifischen Anforderungen Ihres Projekts anpassen.
- Logging: .NET Core bietet praktische Tools zum Protokollieren von Dienstaktivitäten. Entwickler können die integrierten Logging-Engines verwenden oder eine Bibliothek eines Drittanbieters einbinden, um die Protokolle in Dateien oder andere Quellen zu schreiben.
- Parallele Verarbeitung: .NET Core verfügt über eine breite Palette von Tools für die parallele Datenverarbeitung. Entwickler können Multithreading, asynchrone Vorgänge oder andere Techniken verwenden, um die Arbeit im Dienst effizient auszuführen.
- Überwachung und Metriken: Mit der Entwicklung von .NET Core wurden neue Tools eingeführt, um den Dienst zu überwachen und Metriken zu sammeln. Entwickler können diese Tools verwenden, um die Leistung zu verfolgen, Probleme zu identifizieren und ihre Dienste zu optimieren.
All diese Funktionen und Verbesserungen machen die Erstellung eines Dienstes in .NET Core zu einem flexibleren, effizienteren und benutzerfreundlicheren Prozess. Indem sie die Best Practices befolgen und die empfohlenen Tools verwenden, können Entwickler einen stabilen und benutzerfreundlichen Dienst erstellen, der zuverlässig und effizient auf dem Windows-Betriebssystem ausgeführt wird.