微软.NET 6标志着一个为网络、云、桌面和移动设备开发高性能、现代化的应用程序的新时代。以下是其中的新功能:
微软.NET 6是始于.NET 5的.NET统一的巅峰之作。跨平台的.NET 6将.NET核心、.NET框架和Xamarin/Mono技术合并为一个单一的.NET框架,统一了桌面、移动、网络和云应用程序的SDK和运行时间。
微软在2021年11月9日将.NET 6与C# 10和Visual Studio 2022一起普遍推出。除了整体上改善了开发者的体验外,与早期的同类产品相比,.NET 6带来了显著的性能提升。事实上,.NET 6是迄今为止最快的.NET。它也是一个长期支持(LTS)版本,这意味着微软将支持.NET 6三年。
不言而喻,你必须了解.NET 6的新功能,才能充分利用它们。这篇文章讨论了.NET 6中的新功能,以及作为C# 10开发者前进的意义。你可以下载Windows、Linux和macOS的.NET 6.0副本。
请注意,Visual Studio 2022和Visual Studio 2022 for Mac都支持.NET 6。然而,.NET 6与Visual Studio 2019、Visual Studio for Mac 8或MSBuild 16不兼容。如果你想使用.NET 6,你需要升级到Visual Studio 2022。
一个统一的和扩展的.NET平台
.NET 6为桌面、移动、网络、云和物联网应用提供了一个统一的平台。该底层平台支持各种类型的应用程序,并使所有应用程序的代码重复使用变得简单。新的功能和增强功能已经被引入,以确保在云、桌面或移动设备上执行的代码都有相同的表现。
最诱人的增强功能之一是.NET多平台应用程序用户界面(.NET MAUI)。你现在可以编写代码,在一个项目中提供跨越桌面和移动操作系统的现代客户端应用体验。.NET MAUI在5月开始普遍可用。
请注意,无论是.NET 5还是.NET 6,都不是传统的.NET框架的替代品。微软没有计划将Web Forms、Windows Communication Foundation(WCF)或Windows Workflow Foundation(WF)从.NET Framework移植到.NET 5或.NET 6:
- Web表单可以被ASP.NET Core Blazor或Razor Pages取代。
- Windows Communication Foundation(WCF)可以被gRPC取代。
- Windows工作流基金会(WF)可以被开源的CoreWF所取代。
.NET 6的新内容
现在让我们来看看.NET 6中的新功能和改进。
改进的性能
性能得到了很大的提高,特别是对于文件I/O,导致执行时间、延迟和内存使用的减少。FileStream类已被重写,以改善异步文件I/O性能。在Windows上的实现不再使用阻塞的API,这使得它的速度提高了好几倍。
及时编译器(JIT)已经更新。垃圾收集器也有改进。系统类型,如Guid和字符串,已经有了很大的改进。
配置文件指导下的优化
配置文件引导的优化(PGO)是一种编译器优化技术,也是.NET 6中引入的一项新功能,它允许JIT编译器根据最常使用的类型和代码生成优化代码。
统一平台支持
微软为.NET应用程序建立统一平台的工作从.NET 5开始。这个想法是为开发可以在任何设备和任何操作系统上运行的应用程序提供一个统一平台。因此,所有的.NET 6应用程序,跨越网络浏览器、桌面、云、物联网和移动设备,使用相同的.NET库。
引入新的API
为HTTP/3、JSON、数学等增加了新的API。
安全改进
在安全方面有很大的改进,如支持ChaCha20Poly1305加密方案、OpenSSL和 "深度防御 "运行时缓解措施。
C# 10和F# 6的改进
C# 10中的大量改进包括引入了新的lambda功能、记录结构和隐式使用。对F# 6也有改进,包括管道调试和基于任务的异步。
JSON APIs的改进
对JSON APIs的改进带来了更多的功能和更高的性能。为System.Text.Json引入了一个新的源生成器,消除了对运行时反射和代码创建的需要,并允许在构建时产生适当的序列化代码。
云诊断的改进
随着OpenTelemetry和dotnet-monitor的加入,云诊断功能得到了增强,目前已投入生产并可通过Azure App Service访问。
代码质量的改进
引入了源代码生成器和分析器,以帮助你编写更好、更安全、更快速的代码。
热重新加载
热重新加载是.NET 6中增加的最引人注目的新功能之一。你可以利用这一功能在你的应用程序正在执行时修改用户界面。你可以在保存更改后立即看到这些更改的反映--你不需要重新启动应用程序。这个功能大大地提高了开发者的工作效率。
仅限日期和仅限时间的结构
这是一个在.NET中期待已久的功能。你现在可以给一个只有日期或时间的对象设置值。下面是几个例子,说明了你如何使用DateOnly和TimeOnly结构。
var dateNow = new DateOnly(2021, 11, 17);
var newDate = dateNow.AddDays(7);
var timeNow = new TimeOnly(12, 0, 0);
var newTimeNow = timeNow.AddHours(5);
对异步流的支持
在.NET 6中,您现在可以使用IAsyncEnumerable来支持异步流,这使得您可以从服务器上流转数据而无需任何缓冲。
瞄准.NET 6
当你在Visual Studio 2022中创建一个新的.NET 6应用程序时,TargetFramework节点应该指的是.NET 6。一个在.NET 6中创建的典型的.csproj文件将看起来像这样:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
如果你的目标是一个特定的操作系统,你也可以指定一个.NET 6的风味:
- net6.0-android
- net6.0-ios
- net6.0-maccatalyst
- net6.0-tvos
- net6.0-windows
.NET 6中缺少什么?
请注意,有些技术在.NET 5中被放弃了。因此,它们也不是.NET 6的一部分,这些包括以下内容:
- ASP.NET Web Forms。传统的ASP.NET Web表单不再被支持。你可能想用Blazor、Angular或React代替。
- Windows Communication Foundation(WCF)。微软曾打算将WCF带回.NET生态系统,但在确定需要三年左右的时间后放弃了这个想法。微软建议使用谷歌的开源RPC框架gRPC作为替代。
- Windows工作流基金会(WWF)。WWF是一个已经使用了多年的工作流框架,也被从.NET中删除。
.NET的发布时间表
在发布了.NET 5之后,微软承诺在每年的11月提供一个新的.NET版本。
.NET框架在.NET 5发布后就被废弃了。这意味着你仍然可以在支持它的Windows版本上使用.NET框架。然而,由于微软缩短了操作系统的生命周期,你很容易就会使用一个已经到了寿命终点的Windows版本。
微软为.NET 6提供了长期支持。应该注意的是,LTS版本通常从发布之日起支持三年的时间。因此,微软计划支持.NET 6到2024年11月。下一个LTS版本,即.NET 8,将在2023年11月发布。
.NET开发的新时代
从更好、更快、更统一的运行时间到改进的开发者体验,.NET 6的全面优势使其成为自.NET 4以来.NET生态系统中最重要的版本。.NET 6既是迄今为止最快的.NET,具有更小的足迹和更低的资源消耗,也是对开发者最友好的,具有许多语言增强和Hot Reload等功能。
最重要的是,.NET 6使我们朝着简化跨平台应用的开发迈出了一大步。它是一个跨平台框架,允许你为Android、iOS、macOS和Windows创建本地移动和桌面应用程序,而无需维护多个代码库来支持所有这些不同的平台。
微软.NET 6不仅为所有未来的.NET平台建立了一个新的基础。它标志着在.NET中为多个操作系统和架构开发高性能、现代化的应用程序的新时代。有了统一的平台、更好的语言成熟度和改进的开发者工具,.NET 6将成为微软未来几年的默认开发平台。
作者:DebugUsery
链接:https://juejin.cn/post/7126522309220761614