.Net Core3 新特性整理

.net core 3实现了.net 标准2.1。html

一、生成可执行文件

之前版本须要dotnet run运行项目,.net core 3支持直接生成目标平台的可执行文件。好比windows就是exe了,linux就+x了。linux

 

二、生成依赖项的副本

之前版本在build时不会把NuGet的工具复制到目标目录,新版本会复制,但不包括razor和连接(连接的含义不太清楚)。web

 

三、本地工具

这个工具指NuGet的包,之前2.1支持全局的,新版本支持在目录里放置dotnet-tools.json清单文件,再使用dotnet tool restore命令重载。算法

旧版本的工具依然依赖旧版本.net core SDK。json

 

四、支持WPF与Windows Froms

这个在不少国内新闻上已经介绍过了,事实上这些新闻只关注这一条。windows

项目文件的Sdk设置为Microsoft.NET.Sdk.WindowsDesktop,添加<UseWPF>true</UseWPF>与或<UseWindowsForms>true</UseWindowsForms>便可添加支持。服务器

 

五、内建快速的JSON解析器

System.Text.Json.Utf8JsonReader,此物只向前读取(只进读取器),内存占用更少,常规性能是Newton JSON.net的二倍,这个很给力哦!应该会下降不少项目对Newton的依赖。异步

如今只有读取器,之后会有:JSON 写入、DOM(随机访问)、poco 序列化程序、poco 反序列化程序。工具

新推出的Span<T>对高性能的字符分析程序都有很大的好处,包括Kestrel也从中受益。(Kestrel是微软跨平台基于libuv的高性能web服务器,目前应该是最强,不过我尚未其与h2o的比较信息)post

 

六、索引和范围

这应该是吸纳百家之长的又一力做了,Python对索引的支持很是到位,如今.net也支持了(C#8.0才开始有)。

[1,2,3][0] // 1

[1,2,3][^1] // 输出3,反向索引

[1,2,3,4,5][1..^2] // 输出[2,3,4] 范围索引

 

七、异步流

又一个新语言特性,也是要C#8.0支持。

IAsyncEnumerable<T>, IEnumerable<T>的异步版本。

异步枚举器,能够在await foreach中途yield return。建议正式版再使用,如今还有bug。

 

八、类型:SequenceReader 序列读取器

配合前面提到的Span<T>,用于高效率,简单,低分配的读取分析文本,例如分割回车换行。

九、类型:MetadataLoadContext 元素据负载描述表

能够反射一些程序集的信息,可是不能执行程序集的Invoke。用于工具导向的软件,或者运行时激活某些功能的场景,用于释放程序集的文件锁或暂用内存之类的吧啦吧啦……

十、支持Linux 上的 TLS 1.3 和 OpenSSL 1.1.1

使用SslStream的地方,会自动搜寻Linux所安装的最新版本OpenSSL,尽量使用TLS1.3。由于TLS1.3更快,步骤更少。并且在SSL在Linux上的特定版本还有漏洞……OpenSSL的漏洞。

十一、AES-GCM 和 AES-CCM加密算法支持

System.Security.Cryptography.AesGcm,System.Security.Cryptography.AesCcm可用。均使用AEAD算法(Authenticated Encryption with Association Data (AEAD) algorithms)。

十二、加密密钥的导入导出

不用X.509证书便可导入标准的RSA、DSA、ECDsa、ECDiffieHellman公钥证书,与PKCS#8私钥证书。

1三、Linux上支持串口

这个不懂,就是之前只有Windows支持,如今Linux也能够了。

1四、优化了不少现有功能

字符串在字典中作key也会更高效,HttpClient支持无损压缩Brotli,不少都是不须要修改代码就可受益。

1五、分层编译

.net core 2.1新功能,2.2预览版默认启动,2.2正式时改成可选,如今3.0默认开启……曲折。

这货可提升启动性能,更好的JIT性能,提升吞吐量。

1六、Linux的ARM64

哈,Windows 没有。IoT问题吧。

 

 

更多:

.net core中使用GB2312编码的问题

.Net Core EF 使用整理合集

.Net Core URL编码和解码