通过以下方式创建的 Visual Studio API 项目
“新项目”,
“ASP.NET Core Web 应用程序”,
“ASP.NET Core Web API”
结果是一个以...开头的项目文件
<Project Sdk="Microsoft.NET.Sdk.Web">
如果这个 API 需要长时间运行的任务,那么很可能BackgroundService
是需要的。这个文件说以下是长期运行的服务应用程序的起点。
<Project Sdk="Microsoft.NET.Sdk.Worker">
Is Microsoft.NET.Sdk.Worker
与 API 项目兼容,如果可以,如何将此项目信息添加到 API 项目中?
Both Microsoft.NET.Sdk.Web
and Microsoft.NET.Sdk.Worker
是默认项目 SDK 的扩展Microsoft.NET.Sdk
添加在这些项目上下文中有用的某些默认值。
最初,只有普通 SDK 和 Web SDK,其中添加了许多对默认 ASP.NET Core 模板有意义的默认内容。其中一部分显然是对 Razor 的支持以及对特定于 Web 的事物的支持(例如wwwroot
文件夹)。但也有一些默认值是由于默认 WebHost 使用配置文件设置的而引入的,例如appsettings.json
还支持用户机密或 Visual Studio 中的文件嵌套。
当 ASP.NET Core 3.0 发明通用主机时,这为非 Web 项目开辟了主机和主机构建器模式。但由于所有这些特定于主机的默认值都是 Web SDK 的一部分,其中也有很多真正特定于 Web 的东西,因此团队提出了一个新的 SDK,即工作 SDK,用于将使用默认主机的项目构建器但不是网络项目。此工作 SDK 现在基本上包含 Web SDK 的子集,用于使用通用主机和默认主机构建器的项目。
Worker SDK 包含的所有内容都是 Web SDK 的一部分(至少据我所知,如果是的话,也可能只是一些小事情)。这也意味着您可以使用 Worker SDK 执行的所有操作在 Web SDK 中也应该同样有效。
As for BackgroundService
or IHostedService
一般来说:这些是通用主机附带的东西Microsoft.Extensions.Hosting
。虽然建议为此使用工作人员(或网络)SDK,但该实现在技术上并不可行need它。特别是,Web SDK 也完全支持这一点,并且 ASP.NET Core 3.0 或更高版本的 Web 主机实际上是构建在托管服务之上的。
因此,如果您正在构建 ASP.NET Core 应用程序,那么您已经在使用主机构建器的托管服务。如果您需要添加其他托管或后台服务,除了网络主机之外,您只需注册这些服务即可,一切都会正常工作。
总结一下,就SDK功能而言,NET.Sdk
⊂ NET.Sdk.Worker
⊂ NET.Sdk.Web
。因此,如果您想将托管服务添加到 ASP.NET Core Web 项目中,您可以直接执行此操作,但您不应该将 Web SDK“降级”为工作 SDK,因为那样您将错过特定于 Web 的服务ASP.NET Core 应用程序可能需要的功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)