.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年首次发布,支持Windows,Linux和Mac。最新版本.NET Core 3.0于2019年9月23日发布,其中包含了大量的更改和改进。本文讨论了最重要的变化。
主要变化
Windows桌面支持
桌面开发人员一直在等待.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
添加了用于读写器、对象模型和序列化场景的JSON API。这些API最小化了分配,从而提高了性能,并减少了垃圾收集器的工作。这些API是在Span<T>之上从头开始构建,并在后端使用UTF8而不是UTF16(例如string)。
更好的垃圾收集器
默认情况下,垃圾收集器使用较少的内存,通常要少得多。对于许多应用程序托管在同一服务器上的情况,此改进非常有用。垃圾收集器也进行了更新,以更好地利用大于64核的机器上的大量核心。
性能改进
.NET Core 3.0具有许多性能改进。在此处查看完整的列表和性能基准:.NET Core 3.0中的性能改进。
Docker增强
现在,以Docker为目标的.NET Core应用程序可以在容器中高效且可预测地工作。为容器或内存有限配置容器后,垃圾收集器和线程池会更好地工作。.NET Core docker镜像较小,尤其是SDK映像。
ARM64支持
.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差异
有关.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版本的一部分,对语言和框架进行了相关的发布。
C#8
C#8进行了大量更改和语言改进,使用C#编写代码比以往任何时候都更加有趣。一些主要更改包括:
- 异步流(迭代器和异步方法的组合)
- 范围和索引类使使用数组变得更容易。
- 可空引用类型,用于优雅地处理空代码。
- 接口可以具有方法的默认实现。
- using 声明的作用域可以设置为变量,以避免代码缩进。
- switch 语句支持模式匹配,现在返回一个表达式。
另有一篇文章正在详细讨论C#8。
F#4.7
F#是一种成熟的、开源的、跨平台的和功能优先的编程语言,完全通过开放的RFC(注释请求)过程开发。有关该语言最新版本的所有更改的列表,请访问宣布F#4.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.0和Entity Framework 6.3的一般可用性
IDE要求
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:
- 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+
经过Microsoft和Red Hat的多年合作,.NET Core 3.0将在RHEL 8的Red 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开发人员编写下一代应用程序的最理想平台。
.NET Core 3.0中的新功能和增强功能相关推荐
- .NET Core 3.0 中的新变化
译者:楚人Leo 译文:http://www.cnblogs.com/leolion/p/10585834.html 原文:https://msdn.microsoft.com/en-us/magaz ...
- 在.Net Core 3.0中尝试新的System.Text.Json API
.NET Core 3.0提供了一个名为System.Text.Json的全新命名空间,它支持reader/writer,文档对象模型(DOM)和序列化程序.在此博客文章中,我将介绍它如何工作以及如何 ...
- ASP.NET Core 3.0中使用动态控制器路由
原文:Dynamic controller routing in ASP.NET Core 3.0 作者:Filip W 译文:https://www.cnblogs.com/lwqlun/p/114 ...
- .NET Core 3.0中的数据库驱动框架System.Data
虽然没有得到很多关注,但System.Data对于.NET中任何关系型数据库的访问都至关重要.因为其前身是ActiveX Data Objects,所以它也被称为ADO.NET.System.Data ...
- 避免在 ASP.NET Core 3.0 中为启动类注入服务
本篇是如何升级到ASP.NET Core 3.0系列文章的第二篇. Part 1 - 将.NET Standard 2.0 类库转换为.NET Core 3.0 类库 Part 2 - IHostin ...
- .NET Core 3.0 中的数据库驱动框架 System.Data
虽然没有得到很多关注,但System.Data对于.NET 中任何关系型数据库的访问都至关重要.因为其前身是 ActiveX Data Objects,所以它也被称为 ADO.NET.System.D ...
- ASP.Net Core 2.0中的Razor Page不是WebForm
随着.net core2.0的发布,我们可以创建2.0的web应用了.2.0中新东西的出现,会让我们忘记老的东西,他就是Razor Page.下面的这篇博客将会介绍ASP.Net Core 2.0中的 ...
- net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具...
编者按:即使.NET Core3.1.5已经发布,在进行.NET Core的性能诊断时,我们有时依然不知该从何处下手,那这篇介绍.NET Core3.0中引入的诊断工具,或许能为我们提供参考. 在.N ...
- 使用内存数据库的.NET Core 3.0中基于身份(Identity-Based)的身份验证
目录 介绍 背景 先决条件 创建Web应用程序的步骤 第1步 第2步 第3步 第4步 第5步 第6步 运行您的应用程序 总结 下载源9.5 MB 介绍 身份验证是根据系统或用户的身份确定或给予其个人访 ...
最新文章
- 大学计算机信息技术一级考题,大学计算机信息技术一级试题新.pdf
- React Native debug debugger
- 音视频技术开发周刊 70期
- ASP.NET CORE 微服务(简化版)实战系列-没有比这性价比再高的实战课程了
- 前端面试题Vue-cli目录汇总
- 敏捷开发系列学习总结(2)——Bug修改流程
- java数据同步视频,Oracle从入门到精通 oracle数据库 全程同步视频教学 内含Oracle Java项目实战教...
- 凝心聚力 数字未来 | 企企通出席石家庄医药行业数字化转型沙龙
- 行人重识别论文阅读6-低分辨率的行人重识别研究
- 笔记本linux系统重装步骤(Centos7.0)
- MentoHUST的使用教程
- linux centos7下源码 tar安装mysql5.7.22或mysql5.7.20 图文详解
- 树莓派CM4 装系统和换源
- 转载:java面试题(一)
- 基于 移远 BC26 移柯BL620的NB模块调试流程
- 一篇文章学会使用 CompletableFuture(JDK9)
- shell批量修改文件名
- i春秋-misc3-哒哒哒哒,你知道什么是键盘坐标密码吗?---flag{QAZIJCV}
- 论文初稿导师会查重吗?
- wpf中textblock竖立显示文本
热门文章
- oracle archivelog满了,Oracle archivelog占用100%如何处理?
- java输出hello word,教你如何配置java环境输出"hello word!"?
- 绝美自然风光风景壁纸,心旷必然神怡
- 设计灵感在哪里?集设网海纳百川,智慧的聚集地
- 平面设计模板素材|越发流行的霓虹渐变趋势
- 制图折断线_无锡春华教育AutoCAD家具制图/机械/工程制图
- python3.7.4怎么运行_记一次win7在python3.7.4环境启动ride报错解决
- __builtin_apply/__builtin_apply_args
- Linux内核 eBPF基础:Tracepoint原理源码分析
- 分布式定时器的实现原理