.NET Core 3.0中的新功能和增强功能

目录

介绍

主要变化

Windows桌面支持

本机可执行文件

JSON API

更好的垃​​圾收集器

性能改进

Docker增强

ARM64支持

物联网支持

密码学

与.NET Core 2.2的API差异

语言和框架增强

C#8

F#4.7

ASP.NET Core 3.0

EF Core 3.0

IDE要求

当前版本与长期支持版本

支持平台

发行说明

路线图和未来计划

结论


介绍

.NET Core.NET Framework的开源和跨平台的表亲,于2016年首次发布,支持WindowsLinuxMac。最新版本.NET Core 3.02019923日发布,其中包含了大量的更改和改进。本文讨论了最重要的变化。

主要变化

Windows桌面支持

桌面开发人员一直在等待.NET Core中的WinFormsWPF支持。随着.NET Core 3.0的发布,开发人员现在可以为.NET Core开发WinFormsWPF应用程序。

WPF设计器是Visual Studio 2019 16.3的一部分。Windows窗体设计器可作为VSIX下载单独提供。它仍处于预览状态,并且不支持.NET FrameworkWinForms开发的所有功能。开发人员对WinForms设计器的反馈与一些称其为胡思乱想的混在一起。Microsoft不建议您将WinForms应用程序迁移到.NET Core 3.0

根据Microsoft的说法,向后兼容性是设计目标之一,大多数WinFormsWPF应用程序均按原样使用.NET Core 3.0,而无需进行任何代码更改。请注意,桌面应用程序仅在Windows上运行。

您可以使用.NET CLI从命令行中创建和构建桌面应用程序。例如,要快速创建新的Windows窗体应用程序,请执行以下操作:

dotnet new winforms -o mywinformapp
cd mywinformapp
dotnet run

要创建新的WPF应用,请使用:

dotnet new wpf -o mywpfapp
cd mywpfapp
dotnet run

本机可执行文件

.NET Core 3.0生成无需执行dotnet命令即可直接运行的本机可执行文件。它较早仅适用于自包含应用程序,并且是依赖于框架的应用程序的新功能。

#.NET 2.1 and older
dotnet myapp.dll

#.NET 3.0
myapp.exe -- on Windows
./myapp -- on Linux/MacOS

由于生成的可执行文件是本机代码,因此它将仅在为其编译的操作系统和CPU类上运行。例如,为Windows生成的可执行文件将无法在Linux上运行,而为x64生成的可执行文件将不会在ARM上运行,依此类推。如果愿意,您可以像往常一样继续使用dotnet命令启动应用程序。

JSON API

添加了用于读写器、对象模型和序列化场景的JSON API。这些API最小化了分配,从而提高了性能,并减少了垃圾收集器的工作。这些API是在Span之上从头开始构建,并在后端使用UTF8而不是UTF16(例如string)。

更好的垃​​圾收集器

默认情况下,垃圾收集器使用较少的内存,通常要少得多。对于许多应用程序托管在同一服务器上的情况,此改进非常有用。垃圾收集器也进行了更新,以更好地利用大于64核的机器上的大量核心。

性能改进

.NET Core 3.0具有许多性能改进。在此处查看完整的列表和性能基准:.NET Core 3.0中的性能改进

Docker增强

现在,以Docker为目标的.NET Core应用程序可以在容器中高效且可预测地工作。为容器或内存有限配置容器后,垃圾收集器和线程池会更好地工作。.NET Core docker镜像较小,尤其是SDK映像。

ARM64支持

.NET Core 2.12.2分别引入了对LinuxWindowsARM32支持。.NET Core 3.0支持ARM64,这使编写IoT代码变得容易。

物联网支持

通过对Raspberry PiARM芯片的支持,实现了对物联网开发的支持。您还可以使用远程Visual Studio调试器来调试应用程序。.NET 3.0支持GPIOPWMI2CSPI协议,以支持读取传感器数据,在显示器上打印消息,与无线电进行交互等。可以使用ASP.NET上托管的API通过微型站点来配置IoT设备。

密码学

.NET Core 3.0支持通过– AES-GCMAES-CCM密码进行身份验证加密(AE)和关联数据身份验证加密(AEAD)的算法,通过System.Security.Cryptography.AesGcmSystem.Security.Cryptography.AesCcm实现。

现在可以从标准格式导入和导出非对称公钥和私钥,而无需使用X.509证书。添加了对检查PKCS8文件和检查/操作PFX / PKCS12文件的支持。

.NET Core 2.2API差异

有关.NET Core 2.2中所有API更改的列表,请查看以下链接(遵循标准的diff格式):

  • https://github.com/dotnet/core/blob/master/release-notes/3.0/api-diff/3.0.0.md

语言和框架增强

作为.NET Core 3.0版本的一部分,对语言和框架进行了相关的发布。

C8

C8进行了大量更改和语言改进,使用C#编写代码比以往任何时候都更加有趣。一些主要更改包括:

  1. 异步流(迭代器和异步方法的组合)
  2. 范围和索引类使使用数组变得更容易。
  3. 可空引用类型,用于优雅地处理空代码。
  4. 接口可以具有方法的默认实现。
  5. using 声明的作用域可以设置为变量,以避免代码缩进。
  6. switch 语句支持模式匹配,现在返回一个表达式。

另有一篇文章正在详细讨论C8

F4.7

F是一种成熟的、开源的、跨平台的和功能优先的编程语言,完全通过开放的RFC(注释请求)过程开发。有关该语言最新版本的所有更改的列表,请访问宣布F4.7

ASP.NET Core 3.0

ASP.NET Core 3.0引入了Blazor,这是一个使用.NET Core构建交互式客户端Web UI的新框架。有关更多信息,请访问ASP.NET Core 3.0中的新增功能

EF Core 3.0

EF Core 3.0包含600多项产品改进,包括主要功能,次要增强功能和错误修复。请查看此链接,以获取有关主要更改的详细讨论。

  • 宣布Entity Framework Core 3.0Entity Framework 6.3的一般可用性

IDE要求

Visual Studio用户必须安装或升级到Visual Studio 2019 16.3,这是在Windows上使用.NET Core 3.0所必需的更新。

对于要使用.NET Core 3.0Mac用户,它将是Visual Studio for Mac 8.3

对于使用Visual Studio Code开发人员,只需将C#扩展名更新为最新版本即可使用.NET Core 3.0

当前版本与长期支持版本

.NET Core 3.0当前版本,将由.NET Core 3.1取代,后者是长期支持(LTS)版本,即至少受三年支持。现在采用.NET Core 3.0,将使您可以轻松迁移到.NET Core 3.1201911月发布)。

支持平台

以下平台支持.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+

经过MicrosoftRed Hat的多年合作,.NET Core 3.0将在RHEL 8Red Hat Application Streams中可用。

发行说明

在此处查看官方发行说明:

  • https://github.com/dotnet/core/tree/master/release-notes/3.0

路线图和未来计划

可在以下位置找到.NET Core 3.0.NET Framework 4.8的路线图和未来计划的摘要:

  • .NET Core 3.0.NET Framework 4.8的更新

结论

.NET Core即将实现最初打算的.NET Framework的目标,但不能实现:类似于Java的真正跨平台执行。尽管.NET Core的初始版本存在很多问题,但当前版本已成功消除了主要瓶颈,并使我们能够使用.NET编写真正的跨平台代码。容器和物联网支持使其成为.NET开发人员编写下一代应用程序的最理想平台。

你可能感兴趣的:(ASP.NET,CORE,.NET,Core,3.0)