.NET Core Worker в ASP.Net | OTUS

.NET Core Worker в ASP.Net

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

.NET Core Worker Service вместо Windows Service

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

image_5_1-1801-db0d0d.png

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

Если вы используете консоль или работаете на Linux, то воркер можно добавить с помощью следующей команды:

dotnet new worker

53668641_55a96000_3c29_11e9_8b15_20941df06578_1-1801-4d1800.png

Как запустить .NET Worker через Windows-службу

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

Microsoft.Extensions.Hosting.WindowsServices 

55096742_b33d9a80_5077_11e9_9b98_3ea588baf243_1-1801-4b3d2c.png

В класс 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

Чтобы администрировать нашу службу, используйте утилиту от Microsoft SC:

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

Больше статей о программировании читайте в моем блоге.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто