windows 技术预览版即将面世_微软即将发布的.NET 5,蕴藏哪些最新特性?

6a685f0b403c67b9d14c4cf465680f5b.png

作者 | Paul Krill

编译 | 郑丽媛

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

以下为译文:

为了统一.NET平台,.NET 5改进了RyuJIT中代码质量、垃圾收集和JSON序列化等功能。

4e8f67e6c3b9129df60446c268ede507.png

Preview 8

微软已经发布了功能完整的.NET 5的第8个预览版,除了bug修复外,几乎所有的功能都是最终版本。.NET 5中 .NET Framework和.NET Core已合并,旨在一统.NET平台。最新版本预计将于2020年11月10日正式发布。

日前,.NET 5的第8个预览版在8月25号已发布。而在11月的正式版发布前,还将有两个候选版本发布。

.NET 5更高层次的目标包含提供统一的.NET SDK体验,即在所有.NET 5应用程序中使用一个BCL(基类库),并支持跨多个操作系统的本地和web应用程序。一个.NET 5本地应用程序项目将使用这些平台上的本地控件来支持Windows、Microsoft Duo (Android)和Apple iOS等目标。

.NET 5的其他目标还有:允许构建高性能的云应用程序、在BCL中实现更快的算法、运行时中为容器提供更好地支持、以及对HTTP3的支持。.NET 5.0通过Mono的运行时和.NET库,将支持WebAssembly二进制格式,还提供了一组可为空的引用类型注释。

d209f6b7747cb527ba2e5690b837e7ae.png

Preview 7

此前,.NET 5 的第7个预览版在7月21日发布。彼时,关于第7个预览版的公告确认了在.NET 5中有约250个面向性能的请求,而这对于关注.NET 核心性能的人而言会是一个惊喜。

以下是.NET 5第7个预览版公告中提到的其他新增功能和改进:

  • 在序列化时,新的System.text.json JSON API提供了忽略值类型属性的默认值的功能,这有助于减少序列化和线路成本。还为System.text.json添加了在序列化时处理循环引用的功能,预计现在的API就将是最终版本。

  • 垃圾回收将使用GetGCMemoryInfo方法公开最近收集的详细数据,该方法返回GCMemoryInfo结构。GCMemoryInfo会提供关于机器、堆内存和最近收集的信息,或者是指定的GC类型的最新收集(临时、完全阻塞或后台)的信息。这个API很有可能会用于日志记录/监视,或者为请求完整的GC向负载平衡器发出停止旋转机器的指示。同时,为了将昂贵的重置内存操作推迟到低内存情况下,还更改了另一项GC。

  • Ryujit是.NET的汇编代码生成器,其增强的功能包括:取消某些边界检查、尾部重复改进,以及为消除冗余零初始化而进行的改进。Ryujit还具有ARM64硬件内在特性和API优化功能。

3a4f203cdfa2914cc992419bc177c1e7.png

Preview 6

6月25日发布的.NET 5第6个预览版,删除了对WinRT(Windows运行时)的内置支持,WinRT是用于构建通用Windows平台应用程序的API集合。这是一个很重要的变化,因为使用WinRT的.NET Core 3.x应用程序都必须重新编译。.NET和Windows团队一直在竭力改变WinRT在Windows上的工作方式,所以用.NET 5中的C#/ WinRT工具链代替WinRT支持。C#/ WinRT是一个NuGet-packaged的工具包,为C#提供WinRT投影支持。

.NET 5 第6个预览版中的其他变化:

  • .NET 5第6个预览版SDK支持Windows ARM64设备上的Windows Form,并继续在Windows ARM64上添加对Windows Presentation Foundation的支持。

  • RyuJIT代码质量改进包括为消除冗余的零初始化,进行结构处理和优化。此外,在ARM64硬件内在优化以及改进ARM64生成的代码(减小代码大小)方面也取得了进展。

  • 平台支持计划已更新。

0e2cdf594b106f75b15eca8ec4fbe57d.png

Preview 5

6月10日发布的.NET 5第5个预览版包含以下新功能:

  • RyuJIT JIT编译器可以更快,更方便地使用尾调用助手。一旦JIT发现需要一个助手来执行尾调用,它就会在运行时寻求帮助。对于RyuJIT,ARM64硬件内在特性也一直在不断进步。RyuJIT还有其他的改进:在影响正则表达式编译和提高英特尔架构性能的情况下提高了速度。

  • 启用了对带有.NET代码调用的本机二进制文件的导出。此功能的构建块是承载了对UnManagedCallersOnlyAttribute的API支持。本机导出项目允许公开自定义本机出口。它不需要像COM这样的高级互操作技术,而且是跨平台的。

  • DirectoryServices.Protocols的使用正在往Linux和MacOS扩展。

  • 现在支持Alpine 3.12 Linux发行版。

.NET预览5.0版本可以从dot.net.microsoft.com(https://dotnet.microsoft.com/download/dotnet/5.0)下载。

03df1c5dbfe9e5afeefac53e9439bf61.png

Preview 4

5月19日发布的.NET 5 第4个预览版加入了以下新功能:

  • 支持C#9和F#5语言。

  • 改进了F#使用的尾调用的性能。

  • 改善了ToUpperInvariant,string.ToLowerInvariant和相关模式的性能。

  • 改进了HTTP 1.1和HTTP 2性能。

  • 改进了呼叫计数机制。

  • 内部通用字典的动态扩展,消除了通用代码对性能的影响。

  • 固定对象堆以减少堆碎片。

  • 基于新文件发布类型的文件应用程序,从二进制文件开始执行应用程序。

.NET第4个预览版可以从dot.net.microsoft.com(https://dotnet.microsoft.com/download/dotnet/5.0)下载。

291b76f3fe544e46e34ee8b25e0ad888.png

Preview 3

4月23日发布的.NET 5第3个预览版中的增强功能包括:

  • 更新了用于管理位值数组的BitArray类,以包括使用ARM64内部特性对ARM64进行硬件加速的实现。微软表示,BitArray的性能改进是尤为重要。另外,在CLR中实现了栈上替换(OSR),可以允许在方法执行期间更改当前正在运行的方法执行的代码,而这些方法在栈上处于活动状态。为了改善分层编译的性能特征,这个功能现在已经成为x64上的实验性选择功能。RyuJIT的另一个增强功能改进了作为“尾调用”位置调用中参数的结构的代码质量。预计RyuJIT也会提供更好的泛型性能。

  • System.Txt.Json中添加了对保留引用的支持,从而可以对JSON序列化进行引用循环处理。另外,JsonSerializer现在支持不可变的类和结构。也可以支持空值处理。

  • .NET SDK现在将在项目文件中给定.NET Framework目标框架的情况下,自动引用NETFramework.ReferenceAssemblies NuGet包。通过此更改,可以在未安装.NET Framework目标包的计算机上构建.NET Framework项目。这个改进特定于定向包,没有考虑其他可能的项目依赖关系。

4030650507a5e0a6d0993cd2430e1dad.png

Preview 2

4月2日发布的.NET 5第2个预览版中的增强功能包括:

  • 为提高生成的机器代码的质量,对RyuJIT进行了许多更改,包括更高效地消除重复的零初始化以及更早地调用able优化。

  • 现在,可以在标记上一代对象实时保留的gen0 / 1对象时,在不同线程上进行服务器垃圾回收。在某些GC线程比其他线程标记时花费时间更长的情况下,通过跨线程窃取工作可以缩短一点 GC 暂停时间。此外,为允许收集器分别管理固定对象,固定对象堆(POH)的一部分功能已经完成,即垃圾回收内的一部分。这避免了固定对象对世代堆的负面影响。

680a5126c4e8961b89386555e0dfb201.png

Preview 1

3月16日发布的第1个预览版包括了正则表达式性能以及RyuJIT中代码质量的改进。

.NET 5将于2020年11月发布,该版本将包括:

  • ASP.NET Core,一个用于Web应用程序的开源框架;

  • 实体框架核心数据访问技术;

  • WinForms;

  • WPF(Windows Presentation Foundation);

  • Xamarin移动应用程序设备模型;

  • ML.NET。

668d49cb8b03e3a9cb9ce958e57c01f5.png

最后

微软在提供了.NET 5 SDK预览版和附带的运行预览版的同时,表示,.NET 5将提供一个统一的平台来构建任何类型的应用程序。另外,微软将使用Azure负载平衡将流向.NET网站的流量的一半定向到.NET 5版本,用作测试用例。

微软建议开发人员使用.NET Core 3.1构建新应用程序,然后将其迁移到.NET5,并指出只要支持Windows,.NET Framework应用程序可以一直保留在.NET Framework上。

原文:https://www.infoworld.com/article/3533053/whats-new-in-microsoft-net-5.html

本文为 CSDN 翻译,转载请注明来源出处。

f0139ecf29c6dfc92293e978a338a1aa.png 4ba607c47818c2f49df694224f27a024.png
c4cbae931d56574cb9f95f02c9babaad.png

点分享

534f9be9eb806220090badd0cfabb83b.png
71a40a95e76e9c6dbab61f1ffda9f037.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【核心代码】 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 using Aspose.Cells; using Aspose.Slides.Pptx; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Web.Http; namespace DocOnlineView.UI.Controllers.MVCAPI { public class HomeController : ApiController { [HttpGet] public DataTable CourseViewOnLine(string fileName) { DataTable dtlist = new DataTable(); dtlist.Columns.Add("TempDocHtml", typeof(string)); string fileDire = "/Files"; string sourceDoc = Path.Combine(fileDire, fileName); string saveDoc = ""; string docExtendName = System.IO.Path.GetExtension(sourceDoc).ToLower(); bool result = false; if (docExtendName == ".pdf") { //pdf模板文件 string tempFile = Path.Combine(fileDire, "temppdf.html"); saveDoc = Path.Combine(fileDire, "viewFiles/onlinepdf.html"); result = PdfToHtml( sourceDoc, System.Web.HttpContext.Current.Server.MapPath(tempFile), System.Web.HttpContext.Current.Server.MapPath(saveDoc)); } else { saveDoc = Path.Combine(fileDire, "viewFiles/onlineview.html"); result = OfficeDocumentToHtml( System.Web.HttpContext.Current.Server.MapPath(sourceDoc), System.Web.HttpContext.Current.Server.MapPath(saveDoc)); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值