[翻译] 初看 ASP.NET Core 3.0 即将到来的变化
2019-08-06

[翻译] 初看 ASP.NET Core 3.0 即将到来的变化

原文: A first look at changes coming in ASP.NET Core 3.0

在我们努力完成下一个 minor 版本的 ASP.NET Core 的同时,我们也在对下一个 major 版本进行更新,其中包括如何使用框架组合项目、更紧密的 .NET Core 集成以及第三方开源集成,所有这些事的目标都是为了让您更容易、更快速地开发。有关 .NET Core 3.0 的更多内容,我们建议您查看我们之前关于在 Windows 上添加对 .NET Core 3.0 的 WinForms 和 WPF 支持的公告。我们将在不久的将来发布有关 ASP.NET Core 3.0 中新功能的更多详细信息。

包 vs 框架

历史的原因,经过不同的版本和年代,ASP.NET Core 的项目引用和运行方式已经发生了变化。在 1.0 中,ASP.NET Core 本身就只是一个包,像引用其他 Nuget 包一样的出现在项目。这有利有弊,随着时间的推移,我们已经改进了这个模型,试图平衡模块化引用与更大且必备框架之间的优劣势。在 2.1 中,ASP.NET Core 最终发展成为一个 .NET Core “共享框架”(就像 .NET Core 本身的基础框架 Microsoft.NETCore.App 一样)。ASP.NET Core 团队成员 Nate McMaster 撰写的这篇博客文章很好地解释了共享框架的工作原理,同时也了指出当前方法的一些问题。我们在 3.0 中引入的更新旨在为所有用户减少这些问题。

作为本次更新的一部分,将从 ASP.NET Core 3.0 共享框架中删除一些值得注意的子组件:

Json.NET (Newtonsoft.Json)Entity Framework Core (Microsoft.EntityFrameworkCore.*)

有关在 .NET Core 中添加 JSON API 的更多详细信息,请参阅此公告。对于现在仍然依赖于 Json.NET 的地方(例如 MVC 中的 JSON 格式化),我们将继续提供该集成的软件包,但默认将改为使用即将推出的内置 JSON API。

Entity Framework Core 将作为 3.0 中的 “纯” NuGet 包发布。这使得其发布模式与 .NET 上的其他数据访问库相同,用最简单的方式保持持续更新,提供各种 .NET 平台的支持。注意,Entity Framework Core 移出共享框架对其作为 Microsoft 旗下开发、支持和维护的库的状态没有影响,并且它将继续被 .NET Core 支持策略所覆盖。

充分利用 .NET Core

正如本月早些时候在 .NET 博客上所宣布的那样,由于 .NET Framework 的更新策略以及可能对现有应用程序带来破坏,.NET Framework 将只会获得很少的 .NET Core 的新平台新语言特性。为了确保 ASP.NET Core 能够充分利用 .NET Core 未来的发展改进,ASP.NET Core 将从 3.0 开始仅支持在 .NET Core 上运行。展望未来,您可以简单地将 ASP.NET Core 视为 .NET Core 的一部分。

今天在 .NET Framework 上使用 ASP.NET Core 的客户可以继续使用完全支持的 2.1 LTS 版本。2.1 的支持和服务将持续到2021年8月21日。

有关从 .NET Framework 移植到 .NET Core 的更多信息,请参阅此文档。

通过专注的第三方开源集成提供更多价值

与此同时,我们对 3.0 中“平台”的构成做了更明确的区分,从该层中删除了第三方组件,我们认识到, 许多更高层次的方案都是由已建立、有能力且支持良好的开源组件提供最佳支持的, 我们可以帮助支持这些组件更好的集成到 ASP.NET Core 应用程序中。

这种支持将采取不同的形式, 包括我们团队构建的一流集成 API 和包、我们的工程师对现有库的贡献、使用这些库的默认体验中的项目模板、官方 ASP.NET Core上文档站点、以及处理关键问题和 bug 修复 (包括安全性) 的过程。

我们已经在 2.2 版本中开始了这一过程,为流行的 IdentityServer 库开发了新的集成,这将帮助我们在构建 ASP.NET Core 应用程序中的 API 授权时非常简单和实用,同时允许客户在需要时充分利用 IdentityServer 其功能。

我们还致力于简化构建 HTTP API 的体验,新的 API 约定和分析器可以更轻松地使用流行的 Open API库(如 Swashbuckle 和 NSwag),以及一个新的 API 客户端生成系统,可以非常简单与代码生成器集成,例如 AutoRest 和 NSwag。

如果你对我们新的健康检查功能感兴趣,BeatPulse 库的作者正在努力移植他们的库。

我们打算将这些经验汇集到一个新的项目模板中,以便在 2.2 发布之后提供。

尾声

请持续关注,我们会继续发布 ASP.NET Core 在 .NET Core 3.0 中的变化,包括我们在此版本中将要启用的新功能的简介。我们会定期在公告中发布变更详情和其他信息,我们鼓励您订阅。