.NET 的将来:.NET 5

前言

不知不觉中,.NET Framework 已经更新到 4.8,.NET Core 也更新到了 3.0 版本。那么 .NET 的将来怎么样呢?安全

计划

2019 年 Build 大会上,微软宣布下一个 .NET 版本(继 .NET Core 3.0 和 .NET Framework 4.8 以后)将是 .NET 5,统一 .NET Framework 和 .NET Core,今后只有一个 .NET,能够用来开发Windows,Linux,macOS,iOS,Android,tvOS,watchOS 和 WebAssembly 等等。架构

.NET 5 将基于 .NET Core 和 Mono 的最佳实践构建出一个平台,用于全部现代 .NET 平台的开发。
.NET 平台
.NET 5 将于 2020 年正式发布,.NET 6 将于 2021 年正式发布,以此类推。其中偶数版本号为 LTS 版本。框架

继承

.NET 5 将制造一个可在任何地方使用的 .NET 运行时和框架, 并具备统一的运行时行为和开发人员体验,而且经过充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 来扩展 .NET 的功能,最重要的是,所有开源,官方和社区共同参与扩展和改进。asp.net

.NET 5 仍然是开源的、跨平台的、高性能、支持旁加载安装模式和命令行操做等等,并与 Visual Studio、Visual Studio for Mac 和 Visual Studio Code 集成。机器学习

.NET 5 是基于 .NET Core 和 Mono 出来的,也就是说不存在断代的问题,是 .NET Core 的一个升级,同时改个名字顺便统一一下生态,也就是说您现有的 .NET Core 项目届时应当能够无缝升级,就像从 .NET Core 2 升级到 .NET Core 3 那样。性能

创新

新的 .NET 5 中,你能够选择使用 Mono 或 CoreCLR 运行时,前者主要针对移动设备、游戏平台和 WebAssembly,后者主要针对云服务、物联网、机器学习以及 Windows Desktop 等。学习

另外,.NET 5 将在全部平台上提供与 Java 的互操做性,和在多个系统上的 Objective-C 和 Swift 的互操做性测试

成就

高性能、高生产力

.NET 依赖 JIT 将 IL 转化为优化的机器代码,构建了业界领先的基于 JIT 的托管运行时,具备很是高的性能,提高开发人员的体验。优化

JIT 很是适合长期运行的云和客户端方案,它可以生成针对特定机器配置的代码,包括特定的 CPU 指令。JIT 还能够在运行时从新生成方法,能够进行快速的 JIT,而且针对频繁调用的方法生成高质量代码(即分层编译)。ui

从 Techpower 基准测试上 ASP.NET Core 运行的更快也是 JIT 的强大力量和在 CoreCLR 上投资的很好的例子。

大多数 .NET 5 工做场景的默认将使用基于 JIT 的 CoreCLR 运行时。不过 iOS 和 WebAssembly 例外,由于它们都须要 AOT 执行原生编译。

启动快,占用小

Mono 项目的大部分精力都集中在移动和游戏机上。该项目的一个关键功能和结果是基于业界领先的 LLVM 编译器项目的 .NET AOT 编译器。Mono AOT 编译器容许将 .NET 代码内置到一个能够在计算机上运行的原生代码可执行文件中,就像 C++ 代码同样。AOT 编译的应用能够在资源十分有限的地方中高效运行。

Blavor 项目 (WebAssembly) 已经在使用 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、WebAssembly 和一些游戏里将仍然采用 AOT 编译。而对于更须要快速启动或低占用空间的应用程序,AOT 编译将成为一个可选项。

将来

.NET 5 将融合 .NET Framework、.NET Core、Mono、Xamarin 等优势构建出一个统一的 .NET 平台,开发人员能够在此平台上用 C#、VB.NET、F#、XAML 语言、使用相同的 API 开发针对任何系统、任何架构、任何形态的应用程序,而且代码和库都可以经过 .NET Standard 共享。

参考资料

https://devblogs.microsoft.com/dotnet/introducing-net-5