2

我有一个 .NET Core 2.2 Web API,可以根据需要扩展到多个实例。此 API 有一个后台服务 (IHostedService),一次只能在其中一个实例上运行。

是否有一种通用方法或设计模式来确保此服务在任何给定时间点仅在一个实例上运行?

4

1 回答 1

2

与实际应用程序一起包含托管服务的能力就像 Core 中的其他任何东西一样。例如,您可以在同一个项目中使用所有 MVC、API 和 Razor Pages。但是,在某些时候,最好将事物分解为单独的应用程序,这里也是如此。如果您只需要托管服务的一个实例,则应将其拆分为一个单独的项目并部署一个实例。如果您将其部署在您的应用程序中,那么您的应用程序的每个实例都会有一个实例;没有办法解决这个问题。

FWIW,如果你能跳起来,ASP.NET Core 3.0 现在有一个工作服务模板,可以很好地满足要求。您无需升级即可自行部署托管服务,但它会让您的生活更轻松。您也可以只为那个项目使用 3.0;仅仅因为您在一件事上使用 3.0,并不意味着每个项目都必须升级。

于 2019-09-26T12:59:18.543 回答