Что такое .NET Core Worker в ASP.NET Core 3.0

.NET Core Worker Service заместо Windows Service

Если нам надо чтобы какая-нибудь программа работала сама по себе длительно время или постоянно. И, например раз в минуту или час совершала какие-либо действия, то вы можете использовать воркер.

Что такое .NET Core Worker? В .NET Core 3.0 мы познакомимся с новым типом проекта Worker Service. Этот шаблон тесно интегрирован с Виндоус службам или крон в линукс. Своего рода проект заточенный для создания Windows Service (служба виндоус) или демон (daemon) в Linux.

Создать новый проект на ASP.NET Core 3.0

Как добавить asp.net worker через консоль.

Если вы используете консоль или работаете на Linux. То воркер можно добавить через команду

dotnet new worker
image

Как запустить .NET Worker через виндоус службу.

Для того чтобы наш воркер работал в качестве службы нам нужно реализовать механизм запуска, остановки или перезапуска в операционной системе. В шаблоне проекта это удобно реализовано. Для начала установите пакет через NuGet.

Microsoft.Extensions.Hosting.WindowsServices 

image

В класс Program добавим вызов через метод UseServiceBaseLifetime()

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseServiceBaseLifetime()
            .ConfigureServices(services =>
            {
                services.AddHostedService<Worker>();
            });
}

Метод UseServiceBaseLifetime() проверяет запущен ли Worker Service как служба или вы запустили его локально в вашей среде работки типа VisualStudio. Т.е. вам не нужно проводить дополнительных монипуляций метод делает их за вас.

Установка Worker Service

После того как мы указали метод UseServiceBaseLifetime() мы можем установить наш воркер, в качестве службы. Для начала опубликуйте его. В корне вашего проекта запустите команду.

dotnet publish -o c:\MyFolder\workerpub

Чтобы администрировать нашу слушжу используйте утилиту от Макрософт SC

sc create workertest binPath=c:\MyFolder\workerpub\WorkerTest.exe

Comments are closed.