.NET 6 RC1 正式发布

昨天晚上微软发布了.NET 6的两个RC版本中的第一个版本,该版本将于11月正式发布,作为在开源MIT协议下整合所有不同的.NET开发模组件的开源跨平台实现。这是一个从2014年开始,持续多年的,以改变应用开发游戏规则的努力,由于COVID-19大流行,推迟了一年,这个版本终于完成了,将基于Mono的Xamarin 也整合到了.NET 6, 不过据官方博客说明,MAUI 在.NET RTM上仍然是预览版,要到2022年才能够正式发布。

过去的一年时间内,微软.NET团队和社区一起在6个预览版本中加入了大量的功能特性,从RC1开始不再增加新的功能特性,只专注于功能的稳定性和性能优化,不过从.NET 6开始,.NET 框架支持把一些预览的功能提供给用户使用,因此从RC1开始已准备好进行实际生产测试,并且提供了生产可用的支持,使用过程中问题可以寻求微软的技术支持。因此,今天的RC1发布公告并不关注新的好东西,而是.NET 6的基础性功能,其中还有许多功能在一段时间内无法完全实现。微软的.NET主题网站提供了相关内容的高级别视图:


.NET 6 RC1 正式发布

.NET 团队项目经理理Richard Lander 在 9 月 14 日的一篇宣布.NET 6 RC1博文中说, "在每一个版本中,我们都会规划一些需要多年才能完成的项目,而且(根据定义)在一段时间内无法实现其全部价值,鉴于这些功能尚未完全实现,您会注意到这篇文章中对.NET 7 及以后这些功能可能采用的功能不做介绍。

以下是Lander 强调的此类功能的简单摘要:

  • 源码构建:GitHu仓库说:"源码构建的关键目标是满足常用Linux发行版的官方封装规则,如Fedora和Debian。许多 Linux 发行版都有类似的规则。这些规则往往有两个主要原则:一致的可重复性,以及一切事物的源代码。在此处查看更多有关此信息
  • 配置文件引导优化 (PGO):在5月的"关于PGO的对话"中,微软这样介绍PGO:"PGO通过在优化过程中添加新的信息来提高应用程序的性能,而优化过程取决于应用程序的执行方式,而不仅仅是程序的代码。今天,Lander说,开发人员可以使用PGO:
    • 以更高的质量编译启动代码。
    • 通过以低质量(或根本不)编译低使用代码来减少二进制大小。
    • 重新排列应用程序二进制文件,以便在启动时使用的代码在文件开始附近共用。

    .NET 团队一直在努力使在.NET 6 中有最佳的 PGO 体验。目前尚未启用其他人使用 PGO 来优化应用。这就是接下来的.NET 7,在此处查看更多有关此信息

  • 动态 PGO:这涉及到改进实时 (JIT) 编译器生成和消耗配置文件数据的方式,强调所有事情在过程中发生的"动态"场景。"动态PGO是静态PGO系统的镜像,当静态 PGO 与Crossgen 2 集成时,动态 PGO 与 RyuJIT 集成。如果说静态 PGO 需要单独的训练活动并使用特殊工具,则动态 PGO 是自动的,并且使用运行应用程序收集相关数据。静态 PGO 数据持续存在的地方,每次应用运行后都会丢失动态 PGO 数据。动态 PGO 类似于跟踪 JIT。在此处查看更多有关此信息
  • Crossgen2:Crossgen2 取代了Crossgen:Crossgen2 已启用用于所有现有的Crossgen方案,Microsoft 还从 SDK 中删除了(旧的)Crossgen,使其不再可访问且无法使用。"Crossgen (1 和 2) 使预编 IL 能够将本地代码作为发布步骤。预编主要有利于改善启动。Crossgen2 是一种从零开始的实现,已被证明是代码生成创新的卓越平台。例如,Crossgen2可以生成比Crossgen1更广泛的IL模式集的代码。在此处查看更多有关此信息
  • 安全缓解措施:对于此版本,团队添加了两个关键安全措施的预览支持,这些安全措施将在默认情况下在.NET 7 中启用:
    • CET:来自英特尔去年推出的控制流强制执行技术,旨在防范常见的恶意软件威胁。Lander 说,在一些较新的英特尔和 AMD 处理器中,它增加了硬件功能,可以防止某些常见的攻击类型,包括控制流劫持。在此处查看更多有关这些内容
    • W=X:这代表"写xor执行",*介绍,并发音为W xor X。Lander 说,由于它能够阻止基本的攻击路径,不允许同时编写和执行内存页面,因此这是一种非常有效的基本缓解措施,微软避免了使用更高级的缓解措施,因为它们可能因缺乏这种功能而绕过。相反,微软将增加其他补充缓解措施,如CET。在此处查看更多有关此信息
  • HTTP/3:HTTP协议的第三个版本已经被正式使用,它运行在QUIC加密的通用传输协议上,该协议在单个连接上对多个数据流进行多路复用。作为在.NET 6预览版中提出的正式草案,Lander说,它使用QUIC解决了现有的功能和性能挑战。"我们已经将HTTP/3纳入.NET 6,这样你就可以开始尝试它了,这是一个预览功能,因此不受支持。可能有些问题,需要与其他服务器和客户端进行更广泛的测试,以确保兼容性。在此处查看更多有关此信息
  • SDK 工作负载:这是.NET 6 预览 5中强调的 SDK 工作负载的新方案,使 Microsoft 能够在不增加 SDK 大小的情况下为新应用程序类型添加支持。它正在取代旧的单体 SDK 方法,这种方法因建造时间长和分布大小大而不负重任。Lander 说:"在将来的版本中,我们打算删除更多的组件,并使它们成为可选的,包括 ASP.NET 和 Windows 桌面。"最后,我们可以想象 SDK 仅包含 MSBuild、NuGet、语言编译器和工作负载获取功能。我我们非常希望结合广泛的.NET 生态系统,并提供完成特定工作所需的软件。您可以看到此模型如何更好地用于 CI 场景,使 dotnet 工具能够为正在构建的特定代码获取一组定制组件。在此处查看更多有关此信息

Lander在总结中说。".NET 6 有很多新的功能和功能,是为现在和未来,其中大部分已经在之前所有的预览版本,也在即将到来的.NET 6 正式发布博文里,同时,看到.NET 6 中的新功能为接下来的工作奠定了基础,这令人鼓舞。这些都是功未来的大功能,将推动平台在明显和非明显的方式前进。

"在前几个版本中,团队需要专注于将.NET Core 构建为功能齐全、整体的开源和跨平台开发系统。接下来,我们专注于与Mono和Xamarin统一平台。你可以看到,我们正在从那种项目风格转向更具前瞻性的项目。很高兴看到平台在基本运行时间性能方面再次扩展,而且还有更多内容需要沿着这些路线发展。


相关连接:

.NET 6 RC1 正式发布

上一篇:CSS入门学习


下一篇:HTML5——淘宝