如约而至,.NET 5.0 正式发布
作者:Richard
翻译:精致码农-王亮
说明:文章太长,后面关于 C# 9 语言新特性及平台新特性的部分没有翻译,这部分基本都是代码示例,请直接阅读原文。关于 C# 9 新特性的介绍也可以阅读我的系列文章[C# 9.0 新特性]。
我们很高兴今天(美:11 月 10 日,中:11 月 11 日)能发布 .NET 5.0。这是一个重要的版本--包括 C# 9 和 F# 5--具有一系列广泛的新功能和引人注目的改进。微软和其他公司的团队已经在生产和性能测试中积极使用它。这些团队向我们展示了巨大的成果,展示了性能的提升、降低了的 Web 应用程序托管成本。从 Preview 1 开始,我们已经在 5.0 上运行了自己的网站。从我们目前的所见所闻来看,.NET 5.0 带来了巨大的价值,而且升级无需进行较大的改动。对于你的下一个应用程序来说,它是一个很好的选择,并且可以从早期的 .NET Core 版本直接升级。我们希望能让你喜欢在台式机、笔记本电脑和云计算实例中使用它。
ASP.NET Core 和 EF Core 也在今天发布。
你可以下载适用于 Windows,macOS 和 Linux 的 .NET 5.0(适用于 x86、x64、Arm32 和 Arm64 架构的 CPU ):
对于 Visual Studio 用户,你需要Visual Studio 16.8或更高版本才能在 Windows 上使用.NET 5.0,并在 macOS 上使用 Visual Studio for Mac的最新版本。在 C#扩展为 Visual Studio 代码已经支持.NET 5.0 和 C#9。
.NET 5.0 是我们.NET 统一历程中的第一个版本。我们构建.NET 5.0 是为了让更多的开发者能够将他们的.NET Framework 代码和应用程序迁移到.NET 5.0 中。我们还在 5.0 中完成了许多早期工作,以便 Xamarin 开发人员能够在我们发布.NET 6.0 时使用统一的.NET 平台。关于.NET 统一的问题,后面还有更多内容。
现在是一个很好的时机来呼吁与每个为.NET 项目做出贡献的人进行美好的合作。现在官方的 GitHub中有大量的个人和大大小小的公司(包括.NET 基金会公司赞助商)组成的大型社区,就.NET 的各个方面共同协作。.NET 5.0 的改进是许多人的努力、聪明的想法以及他们对平台的关心和热爱的结果,所有这些都超过了微软对项目的管理。我们向每一位为.NET 5.0(以及之前的版本)做出贡献的人致以深深的谢意。
我们早在 2019 年 5 月就引入了.NET 5.0,甚至还设定了 2020 年 11 月的发布日期。在那篇文章中可以看到:“我们将在今年 9 月发布.NET Core 3.0,在 2020 年 11 月发布.NET 5,然后我们打算每年 11 月发布一次主要版本的.NET。” 你会认为 "2020 年 11 月 "是一张无法兑现的支票,因为今年面临着种种挑战。然而,.NET 5.0 已经按时发布。感谢团队中的每一个人,让这一切得以实现!我知道这并不容易。展望未来,你应该期待 2021 年 11 月的.NET 6.0。我们打算每年 11 月发布新的.NET 版本。
本篇博客的其余部分专门强调并详细介绍了.NET 5.0 中的大部分改进。此外,还更新了我们的.NET 统一愿景。
.NET 5.0 亮点
.NET 5.0 有许多重要的改进:
- .NET 5.0 已经经过了实战检验,已在 dot.net 和 Bing.com 部署了好几个月。
- 在许多组件中,性能得到了极大的提高,在.NET 5.0 中的性能改进、.NET 5.0 中的 Arm64 性能和gRPC中都有详细介绍。
- C#9 和 F#5 提供了新的语言改进,例如 C#9 的顶级程序和记录,而 F#5 提供了交互式编程,并提高了.NET 上的功能性编程的性能。
- .NET 库增强了Json 序列化,正则表达式和 HTTP(HTTP 1.1、HTTP/2)的性能。
- 由于GC、分层编译等方面的改进,P95 延迟有所下降。
- 应用部署选项更多更方便了,有了 ClickOnce 客户端应用发布、单文件应用程序、容器镜像尺寸减小,并增加了 Server Core 容器镜像。
- 平台范围扩大,增加了Windows Arm64和WebAssembly。
我为.NET 5.0 预览文章编写了许多示例。你可能想看看 .NET 5.0 示例以了解有关 C#9 和库的新功能的更多信息。
平台和微软支持
.NET 5.0 具有与 .NET Core 3.1 几乎相同的平台支持矩阵,适用于 Windows、macOS 和 Linux。如果你在受支持的操作系统上使用 .NET Core 3.1,你应该能够在同一操作系统版本上采用 .NET 5.0 的大部分内容。.NET 5.0 最重要的新增功能是 Windows Arm64。
.NET 5.0 是一个当前版本。这意味着它将在.NET 6.0 发布后的三个月内得到支持。因此,我们预计将支持 .NET 5.0 到 2022 年 2 月中旬。.NET 6.0 将是一个 LTS 版本,并将像 .NET Core 3.1 一样支持三年。
统一平台愿景
去年,我们分享了一个统一的 .NET 协议栈和生态系统的愿景。对你的价值在于,你将能够使用一套单一的 API、语言和工具来针对广泛的应用类型,包括移动、云、桌面和物联网。你可能会意识到,今天你已经可以使用 .NET 瞄准一组广泛的平台,然而,工具和 API 在 Web 和 Mobile 之间并不总是相同的,也不总是同时发布的。
作为 .NET 5.0 和 6.0 的一部分,我们正在将 .NET 统一为一个单一的产品体验,同时使你能够只选择你想要使用的 .NET 平台的一部分。如果你想针对 Mobile 而不是 WebAssembly,你不需要下载 WebAssembly 工具,反之亦然,ASP.NET Core 和 WPF 也一样。你也将有一个更简单的方法从命令行获取所有你需要的 .NET 工具和运行时包。我们正在为 .NET 平台组件启用包管理器体验(包括使用现有的包管理器)。这对于很多场景来说都会有很大的帮助。开发环境的快速构建和 CI/CD 可能会是最大的受益者。
我们原本打算用 .NET 5.0 来提供全部的统一愿景,但在全球大流行之后,我们不得不适应客户不断变化的需求。我们一直在与来自世界各地的公司团队合作,这些公司需要帮助他们加快采用云技术。他们也必须适应客户不断变化的需求。因此,我们正在通过两个版本来实现这一愿景。
实现这一愿景的第一步是整合.NET 资源库,包括 Mono 的大部分子集。为 .NET 的运行时和库提供一个资源库是在所有地方提供相同产品的前提条件。它还有助于进行影响运行时和库的广泛更改,而以前的版本库是有边界的。有些人担心一个大的 repo 会更难管理,事实证明并非如此。
在 .NET 5.0 版本中,Blazor 是利用 repo 整合和.NET 统一的最好例子。现在,Blazor WebAssembly的运行时和库都是由合并后的dotnet/runtime repo 构建的。这意味着 Blazor WebAssembly 和服务器上的 Blazor 使用完全相同的代码,例如List<T>。在.NET 5.0 之前,Blazor 的情况并非如此。我们对 Blazor WebAssembly 采用的方法与我们在 .NET 6.0 中对 Xamarin 采用的方法非常相似。
.NET 框架仍然是微软支持的产品,并将继续支持每个新版本的 Windows。我们去年宣布,我们已经停止向 .NET Framework 添加新功能,并完成了向 .NET Core 添加 .NET Framework API 的工作。这意味着,现在是考虑将你的 .NET Framework 应用程序转移到 .NET Core 的好时机。对于 .NET Framework 客户端开发者来说,.NET 5.0 支持 Windows Forms 和 WPF。我们从许多开发人员那里听说,可以直接从 .NET Framework 移植。对于.NET Framework 服务器开发者来说,你需要采用 ASP.NET Core 来使用 .NET 5.0。对于 Web Forms 开发人员来说,我们认为 Blazor 提供了类似的开发体验,其实现效率更高、更现代化。WCF 服务器和工作流用户可以寻找支持这些框架的社区项目。从 .NET Framework 到 .NET Core 的移植文档是一个很好的开始。说了这么多,如果你对自己的体验感到满意的话,将你的应用保持在 .NET Framework 上是一个不错的方法。
Windows 团队正在研究 Project Reunion,作为 UWP 和相关技术的下一步任务。我们一直在与 Reunion 团队合作,以确保 .NET 5.0 及以后的版本能够与 WinUI 和 WebView2 良好地配合。
译注:原文后面概括了一些 C# 9 语言新特性及平台新特性,基本都是代码示例,请移步原文查看(老夫实在翻译不动了)。关于 C# 9 新特性更详细的介绍可以阅读我的系列文章[C# 9.0 新特性],该系列还会继续更新。
如约而至,.NET 5.0 正式发布的更多相关文章
- Spring Boot 2.0正式发布,新特性解读
作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...
- 如约而至,Java 10 正式发布! Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势 努力的孩子运气不会太差,跌宕的人生定当更加精彩 优先队列详解(转载)
如约而至,Java 10 正式发布! 3 月 20 日,Oracle 宣布 Java 10 正式发布. 官方已提供下载:http://www.oracle.com/technetwork/java ...
- AppBox_v2.0完整版免费下载,暨AppBox_v3.0正式发布!
文章更新: AppBox v6.0中实现子页面和父页面的复杂交互 AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. AppBox ...
- Socket.IO 1.0 正式发布,快速可靠的实时引擎
Socket.IO 是目前 Web 领域最火的实时引擎,用于实现基于事件的双向实时的通信.它适用于任何平台,浏览器或设备,专注于可靠性和速度.您可以将数据推送到客户端,并获得实时的计数,日志或图表. ...
- Django 1.6.0 正式发布,大幅改进事务处理
Django 1.6.0 正式发布了,查看官方发行说明. 下载地址:Django-1.6.tar.gz ,也可通过 pip 安装: pip install Django==1.6 要求 Python ...
- Apache Spark2.0正式发布
Apache Spark2.0正式发布 7月26日起Databricks开始提供Apache Spark 2.0的下载,这个版本是基于社区在过去两年的经验总结而成,不但加入了用户喜爱的功能,也修复了之 ...
- 【G-BLASTN 1.0正式发布】
[G-BLASTN 1.0正式发布]G-BLASTN使用GPU来加速NCBI-BLAST里的BLASTN模块,单块GTX780比四核CPU平均快6倍. http://www.comp.hkbu.edu ...
- avalon1.0正式发布
2013年最后的收成:avalon1.0正式发布 大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人, ...
- Angular4.0.0正式发布,附新特性及升级指南
本文首发地址:Angular4.0.0正式发布,附新特性及升级指南 作者|孙薇 编辑|尾尾 经历了6个RC版本之后,Angular项目组终于发布了新版,即正式版 Angular 4.0.0.新版的 A ...
- 重磅:Spring Boot 2.0 正式发布!
Spring Boot 2.0 正式发布! 2018/03/01最新消息,传得沸沸扬扬的Spring Boot 2.0 正式发布了. 小编去看了下Spring Boot的官网,正式版本已经释放出来了! ...
随机推荐
- ElasticSearch 索引 VS MySQL 索引
前言 这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的. 这甚至比在我本地使用 MySQL 通过主键的查询速度还快. 为此我搜索了 ...
- Hadoop理论基础
Hadoop是 Apache 旗下的一个用 java 语言实现开源软件框架,是一个开发和运行处理大规模数据的软件平台.允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理. 特性:扩 ...
- spring-boot-route(十一)数据库配置信息加密
Spring Boot最大的特点就是自动配置了,大大的减少了传统Spring框架的繁琐配置,通过几行简单的配置就可以完成其他组件的接入.比如你想要连接mysql数据库,只需要的配置文件里面加入mysq ...
- MySql 关闭 bin 和 log 日志
mysql 的 bin 和 .log 日志文件会非常占用磁盘空间和 IO,修改 mysql 配置文件可以关闭这两种日志的记录. 关闭 bin 日志,将下面三项配置注释掉: #log_bin = mys ...
- DDOS、CC、sql注入,跨站攻击防御方法
web安全常见攻击解读--DDos.cc.sql注入.xss.CSRF 一,DDos https://www.cnblogs.com/sochishun/p/7081739.html#4111858 ...
- mysql5.5和5.6的一些区别
timestamp 5.5中 直接写timestamp不加长度 5.6 中 写的timestamp(3) datatime 5.5中 直接写datetime 不加长度 5.6中 可以添加长度(3 ...
- 多测师讲解接口自动化测试 _requests_高级讲师肖sir
rep=requests.post 错误方法: 1.在代理中---把高级中----代理-----去除勾选,调用失败
- 多测师讲解自动化测试 _RF模拟鼠标悬停_高级讲师肖sir
test19 Open Browser https://www.ctrip.com/?sid=155952&allianceid=4897&ouid=index gc Maximize ...
- 多测师讲解selenium—自动化测试课堂面试题总结—高级讲师肖sir
1.你有做过自动化?你用什么语言? python2.自动化中如何使用语言打开一个网址?浏览器,浏览器对应驱动,导入库,类,get,url3.在一个浏览器中打开多个窗口?open_windows dri ...
- 2020年java全套教程,此套java涵盖了pdf,java源码,项目案例,完整视频约3000G的资源
疫情期间,百无聊赖,是不是需要充电一下,让自己更有竞争力呢?学习java一定要快呦! 废话不多说了,网盘已经爆炸了,把2006年-2020年的全部资料都发给爱学习的你吧, 希望可以改变你的命运,或者是 ...