2020发布 .NET 5 下一代全平台 .Net 框架 [翻译] 正式宣布 .NET 5

[翻译] 正式宣布 .NET 5

2019-05-07 01:18 by Rwing, 16515 阅读, 79 评论, 收藏, 编辑

原文: Introducing .NET 5html

今天,咱们宣布 .NET Core 3.0 以后的下一个版本将是 .NET 5 。这将是 .NET 系列的下一个重要版本。web

未来只会有一个 .NET ,您将可以使用它来开发 Windows,Linux,macOS,iOS,Android,tvOS,watchOS 和 WebAssembly 等等。docker

咱们将在 .NET 5 中引入新的 .NET API、运行时功能和语言功能。编程

从 .NET Core 项目开始,咱们已经向平台添加了大约五万个 .NET Framework API。 .NET Core 3.0 弥补了 .NET Framework 4.8 的大部分剩余功能差距,支持 Windows Forms,WPF 和Entity Framework 6。 .NET 5 构建于此工做之上,利用 .NET Core 和 Mono 的最佳功能建立一个平台,您能够用于全部现代 .NET 代码。安全

咱们打算在 2020 年 11 月发布 .NET 5,并在 2020 年上半年推出第一个预览版。将在 Visual Studio 201九、Visual Studio for Mac 和 Visual Studio Code 的将来更新中支持它。markdown

.NET 5 = .NET Core vNext

NET 5 是 .NET Core 的下一步。该项目旨在经过如下几个关键方式改进 .NET:架构

  • 制造一个可在任何地方使用的 .NET 运行时和框架, 并具备统一的运行时行为和开发人员体验。
  • 经过充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 来扩展 .NET 的功能。
  • 从单个代码库构建该产品,开发人员( Microsoft 和社区)能够一块儿工做并一块儿扩展,从而改进全部方案。

这个新项目和方向是 .NET 的一个重要转折。使用 .NET 5,不管您正在构建哪一种类型的应用程序,您的代码和项目文件都将是相同的。每一个应用均可以访问相同的运行时、API 和语言功能。也包括几乎天天都在进行的 corefx 的性能改进框架

您所喜欢 .NET Core 的全部内容将继续存在:机器学习

  • 在 GitHub 上开源和面向社区。
  • 跨平台实现。
  • 支持利用特定于平台的功能,例如 Windows 上的 Windows form 和 WPF 以及来自 Xamarin 的每一个原平生台的原生绑定。
  • 高性能。
  • 并排安装。
  • 小型项目文件(SDK风格)。
  • 兼容命令行界面(CLI)。
  • Visual Studio,Visual Studio for Mac 和 Visual Studio Code集成。

也有一些新的东西:工具

  • 您将有更多关于运行时体验的选择(更多内容见下文)。
  • Java 互操做性将在全部平台上提供。
  • 多个操做系统将支持 Objective-C 和 Swift 互操做性。
  • CoreFX 将扩展为支持 .NET 的静态编译(ahead-of-time – AOT),更小的空间占用和对更多操做系统的支持。

咱们将在今年 9 月发布 .NET Core 3.0,在 2020 年 11 月发布 .NET 5,而后咱们打算每一年 11 月发布一次主要版本的 .NET:

咱们跳过了版本 4,由于它会让熟悉 .NET Framework 的用户感到困惑,由于 .NET Framework 已经使用了很长时间的4.x系列。此外,咱们但愿清楚地传达 .NET 5 是 .NET 平台的将来。将其称为 .NET 5 使其成为咱们发布过的最高版本。

咱们也借此机会简化命名。咱们认为若是只有一个 .NET 是最好的了,咱们就不须要像 “Core” 这样的澄清术语。较短的名称是一种简化, 还传达了 .NET 5 具备统一的功能和行为的信息。固然若是您愿意也能够继续使用 “.NET Core” 这个名称。

运行时体验

Mono 是 .NET 的原始跨平台实现。它最初是做为 .NET Framework 的开源替代品,并随着 iPhone/iOS 和 Android设 备的普及而转变为针对移动设备。Mono 是用做 Xamarin 一部分的运行时。

CoreCLR 是用做 .NET Core 一部分的运行时。它主要用于支持云应用程序,包括 Microsoft 的最大服务,如今也用于 Windows 桌面,物联网和机器学习应用程序。

总而言之,.NET Core 和 Mono 运行时有许多类似之处(毕竟它们都是 .NET 运行时),但也有宝贵的独特功能。让选择所需的运行时体验成为多是很是有意义的。咱们正在使 CoreCLR 和 Mono 能够互相替换。咱们将使它像构建开关同样简单,以便在不一样的运行时选项之间进行选择。

如下部分描述了咱们计划用于 .NET 5 的主要重心。它们为咱们计划如何单独和共同发展这两个运行时提供了清晰的视角。

高吞吐量和高生产率

从一开始,.NET 就依赖于即时编译器(JIT)将中间语言(IL)代码转换为优化的机器代码。从那时起,咱们构建了业界领先的基于 JIT 的托管运行时,该运行时具备很是高的吞吐量,而且还提升了开发人员体验,使编程变得快速而简单。

JIT 很是适合长期运行的云和客户端方案。他们可以生成针对特定机器配置的代码,包括特定的 CPU 指令。JIT 还能够在运行时从新生成方法,这一共让 JIT 更快速的技术,同时仍可选择生成高度优化的代码版本 (若是这成为常用的方法)。

咱们努力使 ASP.NET Core 在 Techpower 基准测试上运行得更快, 这是 JIT 强大的力量和咱们在 CoreCLR 上的投资的一个很好的例子。咱们为容器强化 .NET Core的努力也证实了运行时动态适应受限环境的能力。

开发人员工具是 JIT 很是棒的另外一个好例子,例如 dotnet watch 工具或编辑并继续。工具一般须要在单个进程中屡次编译和加载代码, 而无需从新启动, 而且须要很是快速地执行此操做。

使用 .NET Core 或 .NET Framework 的开发人员主要依赖于 JIT 。所以,这种体验应该是熟悉的。

大多数 .NET 5 工做场景的默认体验将使用基于 JIT 的 CoreCLR 运行时。两个值得注意的例外是 iOS 和客户端 Blazor(web assembly),由于它们都须要 ahead-of-time (AOT) 原生编译。

快速启动,占用空间小,内存使用率低

Mono 项目的大部分精力都集中在移动和游戏机上。该项目的一个关键功能和结果是基于业界领先的 LLVM 编译器项目的 .NET AOT 编译器。Mono AOT 编译器容许将 .NET 代码内置到一个能够在计算机上运行的原生代码可执行文件中, 就像 C++ 代码同样。AOT 编译的应用能够在较小的位置高效运行, 并在须要时交换吞吐量以进行启动。

Blazor 项目已经在使用 Mono AOT。这将是最先过渡到 .NET 5 的项目之一。咱们把它做为证实这个计划的方案之一。

有两种类型的 AOT 解决方案:

  • 须要 100% AOT 编译的解决方案。
  • 大多数代码是 AOT 编译的解决方案, 但 JIT 或解释器可用于与 AOT 不友好的代码模式 (如泛型)。
    Mono AOT 支持这两种状况。出于安全缘由,苹果对 iOS 和一些游戏机须要第一种 AOT。第二种方法是更好的选择, 由于它提供了 AOT 的优势而且避免了一些缺点。

.NET Native 是咱们用于 Windows UWP 应用程序的 AOT 编译器, 也是上面列出的第一种 AOT 类型的示例。在这个特定实现里, 咱们限制了 .NET API 和您可使用的功能。咱们从这一经验中了解到, AOT 解决方案须要涵盖 .NET API 和模式的全部方面。

在 iOS、 web assembly 和一些游戏机里 AOT 编译仍须要。对于更须要快速启动或低占用空间的应用程序, 咱们将使 AOT 编译成为一个选项。

该项目的诞生

咱们于 2018 年 12 月在波士顿召开了一个技术团队,开始了这个项目。来自 .NET 团队(Mono/Xamarin和.NET Core)以及 Unity 的设计领导者介绍了各类技术能力和架构方向。

咱们如今正在将这个项目做为一个团队推动,并提供一套可交付成果。自 12 月以来,咱们在一些项目上取得了不少进展:

  • 定义了一个最小层,它定义了运行时 <-> 托管代码层,目标是实现 >99% 的 CoreFX 公共代码。
  • MonoVM 如今可使用 CoreFX 及其类库。
  • 使用 CoreFX 实如今 MonoVM 上运行全部 CoreFX 测试。
  • 使用 MonoVM 运行 ASP.NET Core 3.0 应用程序。
  • 在 CoreCLR 上运行 MonoDevelop,而后运行 Visual Studio for Mac。

迁移到单个.NET实现会引起一些重要问题: 目标框架将是什么? NuGet包兼容性规则是否相同? .NET 5 SDK 应该支持哪些工做负载?如何为特定架构编写代码?咱们还须要 .NET Standard吗?
咱们如今正在解决这些问题,很快将分享设计文档供您阅读并提供反馈。

尾声

.NET 5 项目是 .NET 的重要且使人兴奋的新方向。您将看到 .NET 变得更简单,但也具备更普遍,更普遍的功能和实用性。全部新的开发和功能都将成为 .NET 5 的一部分,包括新的 C# 版本。

咱们看到了光明的将来,您可使用相同的 .NET API 和语言来面向各类应用程序类型、操做系统和芯片架构。在 Visual Studio ,Visual Studio for Mac,Visual Studio Code,Azure DevOps 或命令行中,能够轻松更改构建配置以构建不一样的应用程序。

相关文章
相关标签/搜索