Перейти к содержанию

Создание сервиса рабочей роли из шаблона

Для того, чтобы создать проект воркера, в 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.

  1. О IHttpClientFactory написано здесь


Последнее обновление : 12 мая 2023 г.
Дата создания : 12 ноября 2022 г.

Комментарии

Комментарии