.NET Core 3.0 稳定版发布

一年一度的.NET开发者盛会.NET Conf 2019在昨日(举办时间为9.23-9.25)正式开始了。大会第一天最重磅也是最激动人心的消息莫过于 .NET Core 3.0稳定版的发布。.NET项目管理总监 Scott Hunter 在大会宣布了这则消息,并在主题演讲环节围绕.NET Core 3.0 的新特性和社区展开了介绍。

作为一个大版本更新,.NET Core 3.0引入了大量改进和新特性,例如新增加的Windows Forms和WPF、新的JSON API、对 ARM64架构的支持,以及全面提升的性能。对了,C# 8也是.NET Core 3.0本次更新的一部分,其中包括可空引用类型(nullable)、异步流(Async Streams)和更多的模式。

除了C# 8,.NET Core 3.0的更新内容还包括 F# 4.7,此版本主要是对语法进行改进,并将目标平台升级至面向 .NET Standard 2.0。

.NET团队表示 .NET Core 3.0会兼容之前的版本,所以大家现在就可以将项目升级至 .NET Core 3.0。

下载地址

.NET Core 3.0, for Windows, macOS, and Linux

.NET Core 3.0 SDK and Runtime

Snap 安装器

Docker 镜像

.NET Core 3.0的一些“新料”

在深入探究.NET Core 3.0的所有新功能之前,先来看看一些重要的改进,其中提及到了 C# 8、F# 4.7、.NET Standard 2.1、在其他发行版上的支持情况等。

在.NET Core 3.0稳定版发布前,它已在 dot.net 和 Bing.com 这两个网站上运行了数月,并已通过严格的测试。微软的团队也将很快在生产环境中将工作负载部署到 .NET Core 3.0 上。

许多组件的性能都获得了巨大提升,详情可查看介绍 .NET Core 3.0性能改进的内容。

C# 8 增加了异步流(async streams)、范围类型和索引类型(range/index)、更多的模式以及可空引用类型。可空引用类型主要用于帮助我们处理无处不在的空引用异常(NullReferenceException),另外,框架库的底层已被注释,编译器会分析代码流,因此我们能查看null值是否可以将其用于当前位置。

F# 4.7 主要是通过使用隐式的yield表达式来简化一些操作,以及语法。此外还提供了对LangVersion的支持、新增nameof关键字,和处于预览阶段的静态类。F#核心库的目标平台为.NET Standard 2.0,详情点此了解。

.NET Standard 2.1 增加了可以在代码中使用的类型集,它们也可同时用于.NET Core和Xamarin。

.NET Core 现在已为 Windows桌面应用提供支持、同时支持 Windows Forms 和 WPF(已开源)。WPF设计器已属于Visual Studio 2019 16.3的一部分。Windows Forms设计器则仍处于预览阶段,可从 VSIX进行下载。

.NET Core应用现在默认情况下就具有可执行文件。在之前的版本中,需要通过dotnet命令来启动应用,如dotnet myapp.dll。不过从这个版本开始,我们可以使用特定于应用程序的可执行文件(例如 myapp或./myapp, )来启动应用程序,具体取决于操作系统。

新增高性能的JSON API,用于读取器/写入器、对象模型和序列化方案。这些API基于Span从头开始构建,使用 UTF8来替代UTF16(如 string),另外由于这些API使用了最小化的内存分配,因此带来了更好的性能,减少了垃圾回收器的工作。详情请查看 The future of JSON in .NET Core 3.0。

默认情况下,垃圾回收器使用更少的内存。对于许多应用程序托管在同一服务器上的情况,此改进非常有用。此外,新版本中GC能更好地利用具有64核(或大于)的机器的核心数量。

.NET Core强化了对Docker 的支持,以使.NET应用程序在容器中能按预期且有效地运行。当容器被配置为有限的内存或CPU时,垃圾回收器和线程池会更好地进行适应已提供最具优化效果的运行方式。.NET Core的Docker镜像体积也更小——尤其是SDK镜像。

支持Raspberry Pi和 ARM芯片,以助力IoT开发。其中包括远程Visual Studio调试器。这就意味着我们可以使用新的GPIO API来部署可监听传感器的应用程序,并在显示器上打印消息或图像。ASP.NET可用于将数据暴露为API,或作为一个在 IoT设备启用配置的站点。

.NET Core 3.0会被11月发布的.NET Core 3.1取代,因为后者才是 LTS版本(至少会获得三年的技术支持),不过官方还是建议大家先升级到 .NET Core 3.0,然后再升级到3.1,这样过渡起来更方便。

.NET Core 2.2将于今年12.23到达EOL阶段。查看 .NET Core support policy。

.经过与Red Hat的多年合作,.NET Core 3.0将随RHEL 8 在Red Hat Application Streams中一起提供。

Visual Studio用户如需在Windows上使用.NET Core 3.0,需要升级至Visual Studio 2019 16.3。

Visual Studio用户如需在macOS上使用.NET Core 3.0,需要升级至Visual Studio for Mac 8.3。

Visual Studio Code 用户则需要使用最新版本的C#扩展,以确保最新的方案能够正常工作,包括针对.NET Core 3.0的目标平台。

.NET Core 3.0 的 Azure App Service 部署目前正在进行中。

.NET Core 3.0的Azure Dev Ops部署即将推出。

.NET Core 3.0支持的平台

Alpine: 3.9+

Debian: 9+

openSUSE: 42.3+

Fedora: 26+

Ubuntu: 16.04+

RHEL: 6+

SLES: 12+

macOS: 10.13+

Windows Client: 7, 8.1, 10 (1607+)

Windows Server: 2012 R2 SP1+

要注意的是,Windows Forms和WPF应用仅支持在Windows上运行。

对芯片的支持情况如下:

x64 on Windows, macOS, and Linux

x86 on Windows

ARM32 on Windows and Linux

ARM64 on Linux (kernel 4.14+)

注意:请确保.NET Core 3.0在ARM64上的部署使用Linux Kernel 4.14或更高版本。例如,Ubuntu 18.04能满足此要求,但16.04却不满足。

文章来源:

Author:IT之家
link:https://www.ithome.com/0/447/039.htm