全面了解Microsoft.NET5,2021年更好地转向.NET6这是一个比较顺利的交接,统一了新旧工作方式。但归根结底,无论是ProjectReunion、WinUI3,还是.NET5的发布,新技术都在向前发展,而旧技术却在后面。这不是一件坏事。我们出于多种原因开发新的做事方式,但它们通常围绕一个关键点:新方式更好。它解决了旧工具无法解决的问题,并回答了在定义原始解决方案时没有提出的新问题。新世界的新.NET所有这些原因都反映在.NETFramework到.NET5的过渡中。当最初的.NETFramework在20多年前被定义时,我们正在严格地构建单体客户端/服务器应用程序定义的IT环境。现在,我们使用快速变化的基础架构来构建轻量级分布式微服务和跨平台移动应用程序的混合体。这是一个全新的世界。.NETCore专为这种工作方式而设计。从一开始就是跨平台的,除了传统的.NET开发模式和实践之外,还旨在支持新的云优先移动应用程序。它通过三个主要版本获得了越来越多的API;.NETStandard库开始提供通用代码目标,从而更容易在它、.NETFramework和Xamarin之间共享项目。.NET5:前进的道路严格来说,这个新版本应该是.NETCore4,但微软跳过了版本号,以避免与当前版本的.NETFramework混淆。同时,切换到更高版本号并在名称中弃用Core表明这是所有.NET开发的下一步。两个项目仍然保留Core名称:ASP.NETCore5.0和EntityFrameworkCore5,因为仍然有旧项目具有相同的版本号。这是一个重要的里程碑,您需要考虑使用.NET5启动所有新项目并从.NETFramework迁移任何现有代码。虽然Microsoft并未放弃对.NETFramework的支持,但它处于维护模式并且不会在未来的次要版本中获得任何新功能。所有新的API和社区开发都将在.NET5中(并在2021年长期支持.NET6)。.NET5弃用了一些熟悉的技术,例如Web窗体和WindowsCommunicationFoundation。如果您仍在使用它们,最好暂时坚持使用.NETFramework4并计划迁移到更新的受支持技术,例如ASP.NET的RazorPages或gRPC。有计划为提供类似API的替代框架提供社区支持,但采用更新的方法将有助于开发面向未来的代码,并使其更容易跨平台运行。.NET5的一个令人困惑的方面是如何处理.NETStandard库。它们并没有消失,但.NET5代码不需要直接引用它们,因为它们现在是.NET5目标框架标记(TFM)的子集。这个新的TFM取代了旧的netcoreapp和netstandardTFM,但是如果您编写需要跨框架共享的代码,您仍然可以使用.NETStandard2.0TFM来实现兼容性。但是,在大多数情况下,您可能只在.NET5环境中工作,因此您可以安全地坚持net5.0TFM声明。.NET5入门.NET5.0继续使用相同的语言集,包括新版本的C#和F#。这些添加了许多新功能,作为VisualStudio16.8的一部分或更新的C#VisualStudioCode扩展提供。微软已将框架及其所有实现(例如Mono的大部分)移至单个GitHub存储库,以整合开发并确保所有版本都具有相同的底层功能。随着Microsoft转向.NET6,它将引入其他更高级别的实现,包括Xamarin。新的.NET仍然基于为原始公共语言运行时开发的即时编译技术。新的CoreCLR在跨多个处理器架构运行时继续提高性能。随着Apple基于ARM的M1处理器的出现,用.NET为macOS编写的代码将作为本机二进制代码在Intel和基于ARM的硬件上运行,因此代码不需要经过第二层仿真。对ARM64的支持将允许.NET5应用程序直接在基于ARM的硬件上的Windows上运行,充分利用微软自己的SQ1和SQ2处理器的功能。WebAssembly和移动操作系统等一些场景需要预编译代码,而.NET提供了提前编译器及其JIT工具。现在AOT编译器可用于任何开发环境,Uno平台团队已经看到由于WebAssembly支持而显着加速,比以前的WebAssembly语言解释器提高7到15倍。有计划使AOT编译器成为需要快速启动和小内存占用的应用程序的一个选项,例如资源受限的智能手表和物联网硬件。另一种选择是单文件部署。应用程序所需的一切,包括运行时,都捆绑到一个包中,从而更容易在容器或非Windows系统上部署.NET应用程序。不应孤立地看待新的.NET。使用Blazor进行WebAssembly开发和使用MAUI(Multi-platformApplicationUI)进行跨平台UI开发也很重要。通过结合使用这些技术,.NET5拥有从类似RaspberryPi的硬件和Android手机到运行在AWS和Azure上的Kubernetes管理的容器的一切。在2021年迁移到.NET6的重要一点是,它只是沿途的又一步。.NET5是WindowsAPI与OS分离的关键技术,ProjectReunion合并WinRT和Win32API,切换到WinUI3和MAUI的UI层。在2021年.NET6发布后,这方面的大量工作将继续进行,这是其中许多项目的目标。您无需等待.NET6开始迁移。越早开始越好,这样您就有时间处理可能出现的任何问题。将.NET5视为.NET旅程下一阶段的第一步,您应该开始处理所有遗留代码,决定要移植和更新的内容,以及要全面替换的内容。2020年即将结束,您可能正在规划2021年的开发时间表。考虑到这一点,.NET5可以帮助您专注于需要做的事情,为更快节奏的未来准备软件资产不再与Windows版本或Windows绑定。原标题:UnderstandingMicrosoft.NET5,作者:SimonBisson
