【翻译】发布.NET 5 Preview 1

去年年底,我们发布了.NET Core 3.0和3.1。这些版本添加了桌面应用程序模型Windows窗体(WinForms)和WPF,用于构建单页应用程序的ASP.NET Blazor和用于跨平台,基于合消息传递的跨平台gRPC。我们还添加了用于构建服务的模板,用于与gRPC进行通信的丰富的客户端代码生成,REST API服务等等。我们很高兴看到.NET Core 3成为有史以来最快采用的.NET版本,而仅仅在去年,我们又获得了100万用户。

我们还与这些版本进行了交流,以结束从.NET Framework移植应用程序模型的过程。借助.NET Core 3,我们已经移植了所有最常用的应用程序模型,并引入了更新的跨平台框架来替代我们未移植的框架。

当我们期待下一个主要版本.NET 5时,我们继续将.NET统一到一个平台中,并在.NET 5中包含.NET移动设备应用程序模型(Xamarin)。.NET5将包含ASP.NET core,Entity Framework Core, WinForms, WPF, Xamarin和ML.NET。整个平台将首次为所有应用程序模型使用统一的BCL(基类库)。拥有比.NET Core和.NET Framework都更高的版本5,这也清楚表明.NET 5是.NET的未来,它是用于构建任何类型的应用程序的单个统一平台。

我们已经说过很多次了,但是我们将再次重申。.NET Core,然后是.NET 5,用来构建所有新应用程序。只要Windows本身被支持,.NET Framework仍将受支持。我们将继续提供安全性和错误修复,并保持网络和加密API的最新状态。将较旧的应用程序保留在.NET Framework上将保持安全并受到支持。

安装.NET 5.0 Preview 1

今天,我们将发布.NET 5的第一个预览版,该预览版计划于今年11月下旬在GA(一般可用性)中发布。

  • .NET 5.0预览版1 SDK
  • .NET 5.0预览版1运行时

请参阅 .NET 5 Preview 1中的ASP.NET Core更新,以了解当今的ASP.NET Core版本。

预览1首次包括对Windows ARM64的支持。今天的版本包括.NET Core运行时。我们希望Preview 2包含SDK(ASP.NET Core,但不包括WPF或Windows窗体)。稍后的预览将包括WPF和Windows窗体。对Windows ARM64的支持也将反向移植到.NET Core 3.1。我们将在“预览2”帖子中分享有关此信息的更多信息。

更新现有项目

您可以通过更新目标框架来更新现有项目,如下所示:

<code><targetframework>netcoreapp5.0/<targetframework>/<code>

.NET 5的高级目标

让我重点介绍 .NET 5的一些高级目标:

  • 统一的.NET SDK经验: 单个BCL(基类库)包含在所有.NET 5应用程序中。今天,Xamarin应用程序使用Mono BCL,但将转向使用.NET Core BCL,从而改善了我们应用程序模型之间的兼容性。 移动开发(Xamarin)已集成到.NET 5中。这意味着.NET SDK将支持手机开发。例如,您可以使用“ dotnet new XamarinForms”创建移动应用程序。
  • 支持多个平台的本机应用程序:单设备项目,该项目支持可以使用这些平台上支持的本机控件在多个设备(例如Window Desktop,Microsoft Duo(Android)和iOS)上运行的应用程序。
  • 支持多种平台的Web应用程序:单个Blazor项目,该项目支持可以在浏览器中,在移动设备上以及作为本机桌面应用程序(例如Windows 10x)运行的应用程序
  • 云原生应用程序:高性能,单个文件(.exe)<50MB微服务,并支持在本地和云中构建多个项目(API,Web前端,容器)。
  • 持续改进,例如:BCL中的算法更快,运行时中对容器的更好支持,对HTTP3的支持。

今天的第一个预览尚未包含支持这些高级目标的所有工作,但我们将在未来的预览中继续宣布更多功能。

Preview 1中的改进

Preview 1中有以下改进:

正则表达式性能改进

我们已对Regex引擎进行了重大改进。在我们尝试过的许多表达式中,这些改进通常可以使吞吐量提高3-6倍,在某些情况下甚至可以提高更多。我们即将发布一篇博客文章,其中将详细介绍这些改进。

RyuJIT中代码质量的改进

每个版本都对JIT生成的代码进行了一系列性能改进。我们将这些类型的改进称为“CQ”或代码质量。在大多数情况下,这些改进也适用于为准备运行的图像生成的代码。

预览1中有以下改进:

  • 空检查折叠的改进 –在更多情况下,通过观察证明不需要空检查的更多模式,无需生成空检查。
  • 调优的通用子表达式评估(CSE) – JIT查找并折叠仅需要评估一次的重复表达式(wiki)。
  • 优化“ constant_string”长度 –优化此模式并将代码折叠为正确的整数值。
  • JIT:在变体之前构建基本的块pred列表 -重新排序JIT中的阶段,以允许较早使用密钥优化,从而导致更好的代码质量和更少的后续阶段工作,从而增加了JIT吞吐量(参考中的“TP” PR)。

装配负载诊断已添加到事件管道

我们已将程序集加载信息添加到事件管道。这项改进是开始提供类似的诊断功能(与.NET Framework一起使用Fusion Log Viewer的一部分)的开始。现在,您可以使用dotnet-trace通过以下命令来收集此信息:

<code>dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:4:4 --process-id [process ID]
/<code>

使用事件管道的跟踪程序集加载中描述了工作流。您可以查看简单测试应用程序的程序集加载信息。


【翻译】发布.NET 5 Preview 1


事件管道事件探查器API

事件管道是我们在.NET Core 2.2中添加的新子系统和API,可以在任何操作系统上执行性能和其他诊断调查。在.NET 5.0中,事件管道已得到扩展,以使探查器能够写入事件管道事件。对于以前依靠ETW监视应用程序行为和性能的分析探查器,此方案至关重要。

GitHub回购合并

作为.NET 5版本的一部分,我们减少了用于构建和打包.NET的GitHub存储库的数量。回购边界对项目的许多方面都具有重大影响,包括构建和问题管理。使用.NET Core 1.0,我们在ASP.NET,EF和.NET Core中拥有超过100个存储库。通过此最新版本,我们现在可以一方面计算主存储库。我们还将几乎所有存储库都移到了dotnet组织。

查看新的合并仓库:

  • dotnet/runtime(以前是dotnet/corefx,dotnet/coreclr和dotnet/core-setup)
  • dotnet/aspnetcore(在aspnet组织中有多个存储库)
  • dotnet/sdk(以前是dotnet/sdk,dotnet/cli)

结束

我们希望您对.NET 5正在进行的工作感到兴奋!为.NET 5做准备的最好方法是将所有.NET Core应用程序迁移到3.1-我们将使从.NET Core 3.1到.NET 5的过渡尽可能轻松。而且,如果您仍在.NET Framework上构建应用程序,请放心将这些应用程序放在.NET Framework上,但请考虑对所有新应用程序使用.NET Core 3.1。.NET有很多令人兴奋的事情!


分享到:


相關文章: