Что такое .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 worker через консоль.
Если вы используете консоль или работаете на Linux. То воркер можно добавить через команду
dotnet new worker
Как запустить .NET Worker через виндоус службу.
Для того чтобы наш воркер работал в качестве службы нам нужно реализовать механизм запуска, остановки или перезапуска в операционной системе. В шаблоне проекта это удобно реализовано. Для начала установите пакет через NuGet.
Microsoft.Extensions.Hosting.WindowsServices
В класс 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