Как убедиться, что только один экземпляр IHostedService работает в .NET core 2.2 Web API - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть веб-API .NET Core 2.2, который можно масштабировать до нескольких экземпляров в зависимости от потребностей.Этот API имеет фоновую службу (IHostedService), которая должна запускаться только в одном экземпляре одновременно.

Существует ли общий подход или шаблон проектирования, чтобы эта служба работала только в одном экземпляре в любой данный момент времени?

1 Ответ

2 голосов
/ 26 сентября 2019

Возможность включать размещенный сервис вместе с реальным приложением, как и все остальное в Core.Вы можете использовать все MVC, API и Razor Pages, все в одном проекте, если хотите, например.Однако в определенный момент лучше разбить вещи на отдельные приложения, и это также относится к этому случаю.Если вам нужен только один экземпляр вашей размещенной службы, вы должны разбить его на отдельный проект и развернуть один его экземпляр.Если вы развернете его внутри своего приложения, для каждого экземпляра будет экземпляр;Обойти это невозможно.

FWIW, если вы можете сделать скачок, ASP.NET Core 3.0 теперь имеет рабочий шаблон службы, который бы хорошо отвечал всем требованиям.Вам не нужно обновляться, чтобы самостоятельно развернуть размещенную службу, но это облегчит вашу жизнь.Вы также можете просто пойти 3.0 для этого одного проекта;просто потому, что вы используете 3.0 для одной цели, не означает, что каждый проект также должен быть обновлен.

...