10

全面了解微软.NET 5,2021年更好迈向.NET 6

 3 years ago
source link: http://developer.51cto.com/art/202011/632356.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【51CTO.com快译】代际转移可能是微软2020年开发者战略的关键主题之一。这是比较平稳的交接,统一新旧工作方式。但到头来,无论是Project Reunion、WinUI 3还是.NET 5的发布,新技术都在向前发展,将旧技术甩在身后。

q6RVR3U.jpg!mobile

这不是坏事。我们出于多种原因开发了新的做事方法,但它们常常围绕一个关键点:新方法更好。它解决了旧工具无法解决的问题,解答了原始解决方案被定义时未提出的新问题。

面向新世界的新.NET

所有这些原因体现在.NET Framework向.NET 5的转变。20多年前,定义原始.NET Framework时,我们在严格定义的IT环境中构建整体式客户端/服务器应用程序。现在我们使用快速变化的基础架构来构建混合型的轻量级分布式微服务和跨平台移动应用程序。这是全新的世界。

.NET Core是为这种工作方式设计的。一开始就跨平台,除了支持传统的.NET开发模式和实践外,还旨在支持新的云优先移动应用程序。它通过三个主要版本获得越来越多的API;.NET Standard库开始提供通用的代码目标,因而更容易跨它、.NET Framework和Xamarin共享项目。

.NET 5:未来开发之路

严格上讲,该新版本应为.NET Core 4,但微软跳过版本号,避免与.NET Framework的当前版本混淆。同时,改用更高的版本号并弃用名称中的Core表明这是所有.NET开发的下一步。两个项目仍保留Core名称:ASP.NET Core 5.0和Entity Framework Core 5,因为仍存在同样版本号的旧项目。

这是重大的里程碑,标志着您需要考虑用.NET 5启动所有新项目,并从.NET Framework迁离任何现有代码。虽然微软并未摈弃.NET Framework的支持,但它处于维护模式,将来的次要版本中不会得到任何新功能。所有新的API和社区开发都将采用.NET 5(以及2021年的长期支持.NET 6)。

.NET 5弃用了一些熟悉的技术,比如Web Forms和Windows Communication Foundation。如果您仍在使用它们,最好眼下仍使用.NET Framework 4,计划迁移到更新颖的受支持技术,比如ASP.NET的Razor Pages或gRPC。已有计划为提供类似API的替代框架提供社区支持,但是采用更新颖的方法将有助于开发面向未来的代码,并使跨平台运行变得更容易。

.NET 5一个令人困惑的方面是如何处理.NET Standard库。它们没有消失,不过.NET 5代码不需要直接引用它们,因为它们现在是.NET 5目标框架标记(TFM)的子集。这个新的TFM取代了旧的netcoreapp和netstandard TFM,不过如果您编写的代码需要跨框架共享,仍可以使用.NET Standard 2.0 TFM以实现兼容。然而在大多数情况下,您可能只在.NET 5环境中工作,因此可以放心地坚持使用net5.0 TFM声明。

.NET 5入门

.NET 5.0继续托管一系列同样的语言,包括新版本的C#和F#。这些添加了许多新功能,作为Visual Studio 16.8的一部分或与更新后的C#Visual Studio Code扩展一起提供。微软已将该框架及其所有实现(比如Mono的大部分)移到至单个GitHub存储库中,整合了开发,并确保所有版本有相同的基础功能。随着微软转向.NET 6,它会引入其他更高级别的实现,包括Xamarin。

新的.NET仍基于为原始Common Language Runtime开发的即时编译技术。新的CoreCLR在跨多个处理器架构运行的同时,继续提升性能。苹果基于ARM的M1处理器问世后,用.NET for macOS编写的代码将在基于英特尔和ARM的硬件上以原生二进制代码来运行,因此代码无需经过第二层仿真。支持ARM64将使.NET 5应用程序得以直接在基于ARM硬件的Windows上运行,充分发挥微软自己的SQ1和SQ2处理器的功能。

Web Assembly和移动操作系统等一些场景需要预编译的代码,.NET与其JIT工具一道提供了提前编译器。现在AOT编译器可用于任何开发环境,Uno Platform团队已经看到因Web Assembly支持而显著提高速度,是以前的Web Assembly语言解释器的7倍到15倍。

已有计划将AOT编译器作为需要快速启动和内存占用较少的应用程序的选项,比如在资源受限的智能手表和物联网硬件上。另一个选择是单一文件部署。应用程序(包括运行时)所需的一切都捆绑成一个软件包,因而比较容易在容器中或非Windows系统上部署.NET应用程序。

不应孤立地看待新的.NET。使用Blazor进行Web Assembly开发和使用MAUI(多平台应用程序UI)进行跨平台UI开发也很重要。通过结合使用这些技术,.NET 5几乎无所不包:从Raspberry Pi类硬件、安卓手机到AWS和Azure上运行的Kubernetes托管的容器,无一不足。

2021年迈向.NET 6

重要的一点是,这只是整个过程中的另一步。.NET 5是将Windows API与OS分离、Project Reunion合并WinRT和Win32 API以及改用WinUI 3和MAUI这些UI层的一项关键技术。2021年.NET 6发布后,这方面的许多工作仍将继续,.NET6是许多这些项目的目标。您无需等待.NET 6即可开始迁移。越早开始越好,那样您有时间处理可能出现的任何问题。

应该将.NET 5视为.NET旅程下一阶段的第一步,您应该开始拿来所有的旧代码,决定移植和更新哪些代码,以及什么代码需要全面替换。2020年将结束,您可能在计划2021年的开发时间表。有鉴于此,.NET 5可以帮助您关注需要做什么,让您的软件资产为节奏大大加快的未来做好准备,将来不再与Windows版本或Windows息息相关。

原文标题:Understanding Microsoft .NET 5,作者:Simon Bisson

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK