.NET5 它来了!微软大一统时代来临!
阅读原文时间:2023年07月12日阅读:1

今天双11,Microsoft released.NET 5(在他们的开发博客上同时发布)。新版本的重点是改进。NET Core 3.1: 更小的单文件应用程序、对 Windows ARM64的支持以及更强大的 JsonSerializer api 是。NET 5,以及许多可观的性能改进。新的主要语言版本(c # 9和 f # 5)也是本版本的一部分。

统一的平台愿景也得到了微软首席项目经理 Richard Lander 的加强。NET Core.然而,尽管最初的范围发生了变化,。NET 5带来了许多改进。NET Core 3.1,以及一些新特性。这个版本中最相关的特性之一是增加了对 Windows ARM64的支持,支持。NET 在这些平台上本地运行。因此,像 Surface Pro x 这样的设备将能够运行 Windows 窗体、 WPF 和 ASP.NET Core 应用程序。
此版本的另一个重要特性是改进了单文件应用程序。单文件应用程序作为单个文件发布和部署,其中包括应用程序及其所有依赖项。它们也可以是自给自足的,这意味着它们有自己的。NET 运行时——这对于依赖于特定运行时版本的应用程序来说尤其有趣。.NET 5带来了更小的单文件应用程序,具有更高的内存使用效率,并且“更适合跨各种操作系统的微服务包含的应用程序”(如 Hunter 所说)。然而,必须注意的是,单文件应用程序在。NET 5主要关注于 Windows 下的 Linux 应用程序,macOS 仍然需要额外的文件(本地运行时二进制文件)。这种情况将在年重新审视。
NET 6…NET 5还包括不同领域的性能改进: 垃圾收集器(GC)得到了相当大的改进,提高了收集效率,改进了具有较高核心计数的计算机上的可伸缩性,以及许多其他微优化。该版本还为实时(JIT)编译器提供了一个新版本,包括改进的硬件内部函数(包括 ARM64)和 API 优化。罗斯林。NET 编译器平台用于编译 c # 和 Visual Basic 代码到直译语言-也得到了改进,引入了新的注重性能的分析器和 c # 源代码生成器。Source Generators 允许开发人员检查用户代码并生成可以添加到编译中的新源文件。在某些场景中,它们可以用来替换运行时反射调用和 IL 编织。
其他相关的绩效改进。NET 5包括: 正则表达式、 HTTP 1.1请求处理、 HTTP/2伸缩和字符串模式。对已经移植到的 JSON API 进行了重大的改进。3.1,但是。NET 5提供了一个更好的 JsonSerializer,具有改进的集合处理和新的缓存层。gRPC 框架也受到了特别的关注: 微软的基准测试显示了相当大的性能提升。NET Core 3.1(服务器快60% ,客户端快230%)。由于 gRPC 使用 HTTP/2作为其底层协议,新的 HTTP/2实现也部分地负责观察到的性能提高。谷歌的相关变化。Protobuf 软件包——例如增加对 modern 的支持。NET IO 类型(Span < t > ,ReadOnlySequence < t > ,和 IBufferWriter < t >)也直接影响到 gRPC 的性能。所有性能改进的全面清单。NET 5可以在这里找到。

新版本还包括缩小容器图像大小、新的容器 api 和新的目标框架名称。在。NET 5中指定了目标框架。具有 Target Framework Monikers (TFMs)的 csproj 项目文件,这些文件是用于识别项目所针对的 api 集的简短代号:

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
</PropertyGroup>

Net Core 框架也收到了新的特性、性能改进和兼容性修改。新功能包括微软的 Azure AD 认证。身份。在 SignalR 中支持并行的 hub 调用,在 ASP.NET Core API 项目中支持缺省的 Open API 规范(Swagger)。Blazor WebAssembly 的性能改进主要集中在复杂的 UI 呈现(组件虚拟化和预呈现)和 JSON 序列化。因此,Blazor WebAssembly 在。NET 5在大多数情况下比 Blazor WebAssembly 3.2快2-3倍。
最后,还有许多相关的语言更新。NET 5: c # 9专注于程序的简单性和数据不变性,带来了一些新特性,如 Records、顶级语句和改进的模式匹配。F # 5还带来了许多性能改进和两个高要求的新特性: 内插字符串和开放类型声明(类似于 c # 中的打开静态类)。5在 Jupyter notebook、 nteract 和 VSCode Notebooks 中也得到了完全支持。正如预期的那样,开发工具链也得到了更新: Visual Studio 16.8 for Windows 今天也发布了。NET 5已经包含在内) ,现在两者都支持 ClickOnce 应用程序部署。NET Core 3.1和。
根据微软的说法,。NET 5已经准备好部署到生产环境中:。NET 网站和必应网站一直在运行。NET 5自从第一个预览版发布以来,它也“已经被微软和其他公司的团队在生产和性能测试中积极使用” ,正如官方发布说明中所说。的完整发行说明。NET 5可以在这里找到,还有一个全面的列表,列出了从。3.1 to.NET 5——包括一个支持 WinRT api 的新模型——可以在这里找到。第一次预演。NET 6预计将在今年年底推出。水流。NET 开发路线图可以在这里找到。