在我的 ASP.NET Core 2.0 项目中,我一直在使用 Microsoft.Extensions.Hosting 命名空间中的 IHostingEnvironment 和 IApplicationLifetime。
在 ASP.NET Core 2.1 中,这些接口似乎位于 Microsoft.AspNetCore.Hosting 和 Microsoft.Extensions.Hosting 命名空间中。有什么区别以及我应该使用哪个命名空间?
仅供参考,我还使用了 BackgroundService 类,该类现在位于 Microsoft.Extensions.Hosting 命名空间中(Core 2.1)。
从 ASP.NET Core 2.0 开始有两种托管模式 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host:
- 我们一直拥有的 ASP.NET Core Web 托管模型:它存在于
Microsoft.AspNetCore.Hosting
命名空间。
- A new, 通用托管模型来支持其他应用程序(例如控制台应用程序和 Windows 服务)中的基础架构和横切关注点:这存在于
Microsoft.Extensions.Hosting
命名空间。
两个不同模型之间存在一些接口和其他类型的重复。对于 Web 应用程序,您通常应该使用Microsoft.AspNetCore.Hosting
名称空间except为了IHostedService
, BackgroundService
以及其他相关类型。
仍有工作正在进行,以将尽可能多的类型和逻辑转移到通用托管模型并提高两者之间的兼容性。例如,IHostingEnvironment
and IApplicationLifetime
在网络托管模型中可能从相同的接口继承 https://github.com/aspnet/Hosting/pull/1461在未来版本的通用托管模型中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)