0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: asp.net, core worker, worker service</p>
1
<p>Теги: asp.net, core worker, worker service</p>
2
<p>Если нам надо, чтобы какая-нибудь программа работала сама по себе длительное время или постоянно и, например, раз в минуту или час совершала какие-либо действия, вы можете использовать .NET Core Worker.</p>
2
<p>Если нам надо, чтобы какая-нибудь программа работала сама по себе длительное время или постоянно и, например, раз в минуту или час совершала какие-либо действия, вы можете использовать .NET Core Worker.</p>
3
<h2>.NET Core Worker Service вместо Windows Service</h2>
3
<h2>.NET Core Worker Service вместо Windows Service</h2>
4
<p>Что такое .NET Core Worker? В .NET Core 3.0 появился новый тип проекта Worker Service. Этот шаблон тесно интегрирован с Windows -службами или Cron в Linux. Своего рода проект, заточенный для создания Windows Service или daemon в Linux.</p>
4
<p>Что такое .NET Core Worker? В .NET Core 3.0 появился новый тип проекта Worker Service. Этот шаблон тесно интегрирован с Windows -службами или Cron в Linux. Своего рода проект, заточенный для создания Windows Service или daemon в Linux.</p>
5
<h2>Как добавить asp.net worker через консоль</h2>
5
<h2>Как добавить asp.net worker через консоль</h2>
6
<p>Если вы используете консоль или работаете на Linux, то воркер можно добавить с помощью следующей команды:</p>
6
<p>Если вы используете консоль или работаете на Linux, то воркер можно добавить с помощью следующей команды:</p>
7
<h2>Как запустить .NET Worker через Windows-службу</h2>
7
<h2>Как запустить .NET Worker через Windows-службу</h2>
8
<p>Для того чтобы наш воркер работал в качестве службы, нам нужно реализовать механизм запуска, остановки или перезапуска в операционной системе. В шаблоне проекта это удобно реализовано. Для начала установите пакет через NuGet.</p>
8
<p>Для того чтобы наш воркер работал в качестве службы, нам нужно реализовать механизм запуска, остановки или перезапуска в операционной системе. В шаблоне проекта это удобно реализовано. Для начала установите пакет через NuGet.</p>
9
Microsoft.Extensions.Hosting.WindowsServices<p>В класс Program добавим вызов через метод UseServiceBaseLifetime():</p>
9
Microsoft.Extensions.Hosting.WindowsServices<p>В класс Program добавим вызов через метод UseServiceBaseLifetime():</p>
10
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>(); }); }<p>Метод UseServiceBaseLifetime() проверяет, запущен ли Worker Service как служба, или вы запустили его локально в вашей среде работки типа VisualStudio. Т. е. вам не нужно проводить дополнительных манипуляций -- метод делает их за вас.</p>
10
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>(); }); }<p>Метод UseServiceBaseLifetime() проверяет, запущен ли Worker Service как служба, или вы запустили его локально в вашей среде работки типа VisualStudio. Т. е. вам не нужно проводить дополнительных манипуляций -- метод делает их за вас.</p>
11
<h2>Установка Worker Service</h2>
11
<h2>Установка Worker Service</h2>
12
<p>После того, как мы указали метод UseServiceBaseLifetime(), мы можем установить наш воркер в качестве службы. Для начала опубликуйте его. В корне вашего проекта запустите команду.</p>
12
<p>После того, как мы указали метод UseServiceBaseLifetime(), мы можем установить наш воркер в качестве службы. Для начала опубликуйте его. В корне вашего проекта запустите команду.</p>
13
dotnet publish -o c:\MyFolder\workerpub<p>Чтобы администрировать нашу службу, используйте утилиту от Microsoft<a>SC</a>:</p>
13
dotnet publish -o c:\MyFolder\workerpub<p>Чтобы администрировать нашу службу, используйте утилиту от Microsoft<a>SC</a>:</p>
14
sc create workertest binPath=c:\MyFolder\workerpub\WorkerTest.exe<p><em>Больше статей о программировании читайте в<a>моем блоге</a>.</em></p>
14
sc create workertest binPath=c:\MyFolder\workerpub\WorkerTest.exe<p><em>Больше статей о программировании читайте в<a>моем блоге</a>.</em></p>
15
15