Blog
Worker Services in .NET Core 3.0
Met de komst van .NET Core 3.0 in september zet Microsoft een nieuwe stap voor het .NET platform. In mijn blog over de nieuwe features in .NET Core 3.0 komen de meest belangrijke aan bod. Onderdeel van .NET Core 3.0 zijn Worker Services. In deze blog vertel ik hier meer over.
Worker Services in .NET Core 3.0
In de laatste versies van Visual Studio 2019 is een project template toegevoegd voor Worker Services. Dit template is uitermate geschikt om lang lopende processen mee te ontwikkelen.
!(WorkerServicesTemplate)[WorkerServicesTemplate-450×314.png]
Een Worker Service is een console applicatie waarin een Worker class zit (Dit kan ook een andere class naar keuze zijn. In de Program.cs wordt m.b.v. de AddHostedService methode de juiste class gekoppeld). Deze Worker class bevat een ExecuteAsync methode. In deze methode kan de logica worden geïmplementeerd.
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}Een Worker Service kan ook eenvoudig als Windows Service gedraaid kan worden. Hiervoor wordt het Microsoft.Extensions.Hosting.WindowsServices NuGet package gebruikt. Deze bevat een extension method UseWindowsService welke in de Startup class gebruikt kan worden.
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseWindowsService()
.ConfigureServices(services =>
{
services.AddHostedService();
});Om deze Worker service nu echt als Windows Service te installeren en gebruiken dienen we het volgende command in een admin command prompt uit te voeren:
sc create workertest BinPath=WorkerServiceDemo.exeHierbij dien je het BinPath te laten wijzen naar de executable van jouw applicatie. Je kan de applicatie nu terugvinden bij de Windows Services.
Zoals je ziet is het eenvoudig om in .NET Core 3.0 Windows Services te maken voor lang lopende processen. Een voorbeeld applicatie kun je hier downloaden.