可以在现有的 ASPNET.Core Web 项目中调用和/或使用 Worker Service 吗?

Pau*_*uer 2 backgroundworker .net-core asp.net-core

我一直在阅读和学习 .Net Core 3.0 中提供的新 Worker Service 功能。我一直在使用 Microsoft 的此链接:后台任务与 ASP.NET Core 中的托管服务

我不明白的是,这些工作服务概念可以引入到现有的 ASPNET Web 项目中,例如 Razor Pages 站点吗?或者您必须创建一个新项目,然后使用主机操作系统为此提供的任何机制将该项目部署为服务?

pok*_*oke 5

是的,您可以IHostedService在 ASP.NET Core 应用程序中托管任意数量的托管服务 ( )。在版本 3 中,ASP.NET Core 使用通用主机 ( Host.CreateDefaultBuilder),这是在应用程序启动时托管这些托管服务的框架。事实上,ASP.NET Core Web 应用程序是一个IHostedService本身。

要将其他托管服务添加到您的 ASP.NET Core 应用程序,只需在您的服务集合中注册其他托管服务,例如在 Startup 的ConfigureServices:

services.AddHostedService<MyHostedService>();
Run Code Online (Sandbox Code Playgroud)

当应用程序运行时,该服务将与 ASP.NET Core Web 服务器一起启动。

文档中提到的 Worker SDK 实际上是您与 ASP.NET Core 应用程序一起使用的 Web SDK 的一个子集。Microsoft.NET.Sdk.Worker基本上Microsoft.NET.Sdk.Web没有特定于网络的东西,比如 Razor 编译和wwwroot文件夹的东西。它基本上设置了自动文件通配符,例如,appsettings.json并做了一些核心Microsoft.NET.Sdk没有的其他有用的事情。

最终这意味着,当您使用 Web SDK 时,您已经拥有了 Worker SDK 提供的一切。所以你不需要指定 Worker SDK 来托管额外的后台服务。