38

微软为.NET Core 2.1提升了性能及部署选项

 5 years ago
source link: https://www.linuxprobe.com/net-core-2-1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
导读 微软正式发布了面向所有平台的.NET Core 2.1。微软计划长期支持这个版本,但据来自微软的Rich Lander介绍,官方还没有确定。Lander表示,在完成之前,该版本新增了许多小的更新。一旦正式确定,这个版本将获得为期三年的LTS。Lander指出,对于所有开发中的.NET Core应用程序,编程人员应该现在就着手切换到2.1。

切换到2.1有什么好处?除了很快就可以确定的LTS外,2.1还提供了Ubuntu 18.04,、Alpine Linux和ARM32支持。它还添加了自包含应用程序发布,并改进了性能。

在考虑性能提升时应该注意,这里的性能提升是指,与.NET Core 2.0相比,2.1的增量构建性能的提升。同时,2.1版本还增加了一个全新的类SocketsHttpHandler,这是HttpClient的C#实现。SocketsHttpHandler比之前的实现要快许多,并且提供了一致的跨平台行为。

来自微软的Stephen Toub详细介绍了2.1版本的运行时性能提升。其中有些提升来自新增的System.Span及相关类型。.NET Core 2.1使用的Just-In-Time(JIT)编译器也做了一些修改。值得一提的补充是增加了利用分层编译的能力。在这个场景下,JIT编译器会尽快生成最小优化的可执行文件。完成之后,JIT编译器会观测程序运行,对使用频繁的方法进行更为优化的二次编译。其理论是,如果可以的话,为什么要对可能并不怎么使用的方法进行优化?这一行为并不是默认激活的,但可以通过下面的环境变量来激活:
COMPlus_TieredCompilation="1"

性能提升不限于代码优化;.NET Core团队引入了一种新的压缩标准,减少数据传输。微软使用了一种基于谷歌提供的C代码的实现,向.NET Core 2.1添加了Brotli压缩支持。由于Brotli得到了许多Web浏览器和Web服务器的广泛支持,所以.NET Core提供对这项技术的支持是非常有用的。

最后,.NET Core 2.1支持自包含部署(SCD)。这让开发者生成的应用程序的Release构建中可以包含所有执行时需要的.NET Core运行时文件。然而,与平常的构建相比,这会占用更多的磁盘空间,因此,它允许开发人员指定应用程序运行的平台和使用的.NET Core版本。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK