.NET Core Worker в ASP.Net | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
iOS Developer. Professional
-8%
Базы данных
-12%
Agile Project Manager
-5%
Python Developer. Basic
-10%
Java Developer. Professional
-7%
JavaScript Developer. Professional
-3%
MS SQL Server Developer
-8%
Scala-разработчик
-8%
Java Developer. Basic
-8%
Алгоритмы и структуры данных
-9%
Разработчик IoT
-13%
PostgreSQL
-8%
Подготовка к сертификации Oracle Java Programmer (OCAJP) Python Developer. Professional Golang Developer. Professional Разработчик программных роботов (RPA) на базе UiPath и PIX Unity Game Developer. Basic Разработчик голосовых ассистентов и чат-ботов C# ASP.NET Core разработчик VOIP инженер NoSQL Flutter Mobile Developer Супер - интенсив по Kubernetes iOS Developer. Basic Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool"
Инфраструктура
Базы данных
-12%
Network engineer. Basic
-10%
Network engineer
-4%
Инфраструктурная платформа на основе Kubernetes
-6%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Экспресс-курс «Введение в непрерывную поставку на базе Docker»
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Дизайн сетей ЦОД
-13%
PostgreSQL
-8%
DevOps практики и инструменты Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов VOIP инженер Супер-практикум по работе с протоколом BGP NoSQL Супер-практикум по использованию и настройке GIT Супер-интенсив «СУБД в высоконагруженных системах» Экспресс-курс «IaC Ansible»
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

.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 комментариев
Для комментирования необходимо авторизоваться