Создание сервиса рабочей роли из шаблона¶
Для того, чтобы создать проект воркера, в VS выбираем File > New > Project > Worker Service. То же самое можно сделать, используя командную строку: dotnet new worker.
Теперь приложение надо настроить. Для примера настроим приложение, обновляющее курсы валют по таймеру.
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHttpClient<ExchangeRatesClient>();
services.AddHostedService<ExchangeRatesHostedService>();
services.AddDbContext<AppDbContext>(options =>
options.UseSqlite(
hostContext.Configuration
.GetConnectionString("SqliteConnection")));
});
}
Совет
При помощи методов IHostBuilder можно контролировать, когда именно будут запускаться ваши фоновые задачи, автор написал об этом пост в блоге
Если мы посмотрим на .csproj файл проекта, мы увидим следующие сходные с проектом ASP.NET Core моменты:
- оба типа приложений должны указывать
<TargetFramework>; - оба типа приложений используют систему конфигурации, поэтому в воркерах можно использовать
<UserSecretsId>также, как описано здесь; - оба типа приложений должны явно добавлять ссылки на NuGet-пакеты EF Core.
Наряду с этим, есть и различия:
- атрибут
SdkэлементаProjectдля воркера выглядит так:Microsoft.NET.Sdk.Worker, тогда как для ASP.NET Core —Microsoft.NET.Sdk.Web; - сервис рабочей роли должен явно ссылаться на пакет Microsoft.Extensions.Hosting;
- возможно, потребуется явно добавить зависимости, неявно включённые в ASP.NET Core. Например - Microsoft.Extensions.Http, предоставляющий
IHttpClientFactory1.
Последнее обновление :
12 мая 2023 г.
Дата создания : 12 ноября 2022 г.
Дата создания : 12 ноября 2022 г.