目录
介绍
主要变化
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年首次发布,支持Windows,Linux和Mac。最新版本.NET Core 3.0于2019年9月23日发布,其中包含了大量的更改和改进。本文讨论了最重要的变化。
桌面开发人员一直在等待.NET Core中的WinForms和WPF支持。随着.NET Core 3.0的发布,开发人员现在可以为.NET Core开发WinForms和WPF应用程序。
WPF设计器是Visual Studio 2019 16.3的一部分。Windows窗体设计器可作为VSIX下载单独提供。它仍处于预览状态,并且不支持.NET Framework中WinForms开发的所有功能。开发人员对WinForms设计器的反馈与一些称其为“胡思乱想的”混在一起。Microsoft不建议您将WinForms应用程序迁移到.NET Core 3.0。
根据Microsoft的说法,向后兼容性是设计目标之一,大多数WinForms和WPF应用程序均按原样使用.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。这些API最小化了分配,从而提高了性能,并减少了垃圾收集器的工作。这些API是在Span
默认情况下,垃圾收集器使用较少的内存,通常要少得多。对于许多应用程序托管在同一服务器上的情况,此改进非常有用。垃圾收集器也进行了更新,以更好地利用大于64核的机器上的大量核心。
.NET Core 3.0具有许多性能改进。在此处查看完整的列表和性能基准:.NET Core 3.0中的性能改进。
现在,以Docker为目标的.NET Core应用程序可以在容器中高效且可预测地工作。为容器或内存有限配置容器后,垃圾收集器和线程池会更好地工作。.NET Core docker镜像较小,尤其是SDK映像。
.NET Core 2.1和2.2分别引入了对Linux和Windows的ARM32支持。.NET Core 3.0支持ARM64,这使编写IoT代码变得容易。
通过对Raspberry Pi和ARM芯片的支持,实现了对物联网开发的支持。您还可以使用远程Visual Studio调试器来调试应用程序。.NET 3.0支持GPIO,PWM,I2C和SPI协议,以支持读取传感器数据,在显示器上打印消息,与无线电进行交互等。可以使用ASP.NET上托管的API通过微型站点来配置IoT设备。
.NET Core 3.0支持通过– AES-GCM和AES-CCM密码进行身份验证加密(AE)和关联数据身份验证加密(AEAD)的算法,通过System.Security.Cryptography.AesGcm和System.Security.Cryptography.AesCcm实现。
现在可以从标准格式导入和导出非对称公钥和私钥,而无需使用X.509证书。添加了对检查PKCS#8文件和检查/操作PFX / PKCS#12文件的支持。
有关.NET Core 2.2中所有API更改的列表,请查看以下链接(遵循标准的diff格式):
作为.NET Core 3.0版本的一部分,对语言和框架进行了相关的发布。
C#8进行了大量更改和语言改进,使用C#编写代码比以往任何时候都更加有趣。一些主要更改包括:
另有一篇文章正在详细讨论C#8。
F#是一种成熟的、开源的、跨平台的和功能优先的编程语言,完全通过开放的RFC(注释请求)过程开发。有关该语言最新版本的所有更改的列表,请访问宣布F#4.7
ASP.NET Core 3.0引入了Blazor,这是一个使用.NET Core构建交互式客户端Web UI的新框架。有关更多信息,请访问ASP.NET Core 3.0中的新增功能。
EF Core 3.0包含600多项产品改进,包括主要功能,次要增强功能和错误修复。请查看此链接,以获取有关主要更改的详细讨论。
Visual Studio用户必须安装或升级到Visual Studio 2019 16.3,这是在Windows上使用.NET Core 3.0所必需的更新。
对于要使用.NET Core 3.0的Mac用户,它将是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.1(2019年11月发布)。
以下平台支持.NET Core 3.0:
经过Microsoft和Red Hat的多年合作,.NET Core 3.0将在RHEL 8的Red Hat Application Streams中可用。
在此处查看官方发行说明:
可在以下位置找到.NET Core 3.0和.NET Framework 4.8的路线图和未来计划的摘要:
.NET Core即将实现最初打算的.NET Framework的目标,但不能实现:类似于Java的真正跨平台执行。尽管.NET Core的初始版本存在很多问题,但当前版本已成功消除了主要瓶颈,并使我们能够使用.NET编写真正的跨平台代码。容器和物联网支持使其成为.NET开发人员编写下一代应用程序的最理想平台。