手机版

解释中的新变化 NET Core 3.0的细�

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

那个。NET Core 3.0是的下一个主要版本。NET Core平台。本文回顾了。Net Core,并展示了它是如何从基本支持Web和数据工作负载的版本1发展到可以运行Web、桌面、机器学习、容器、IoT等的版本3.0的。净核心1

的历史。NET Core可以追溯到几年前。版本1于2016年推出,旨在生成开源和跨平台(Windows、macOS和Linux)的第一个版本。NET。灵感来自只能使用开源框架的客户和其他需要运行的客户。NET应用程序。因为。NET Core是跨平台的,按照设计,所有操作都可以使用命令行完成,不需要使用IDE。为了应对全球安装的兼容性挑战。NET Framework,它是用并行支持设计的,包括附带的框架作为应用程序的一部分,这样应用程序就不会依赖于安装在计算机上的任何框架。版本1带来了新版本的ASP.NET,实体框架(EF)和主要针对网络应用程序。净核心2

虽然版本1支持运行。NET在新平台上,它只支持有限的一组。NET应用编程接口。为了解决这个问题,我们创造了。NET标准,它指定了任何。NET运行时必须实现,这样我们就可以跨。NET平台和版本。英寸NET标准2.0,我们向。NET标准规范。那个。NET Core第2版于2017年6月发布,支持。NET标准2.0,允许它访问这些API。我们还介绍了视窗兼容性包,这是一个包含许多视窗专用应用程序接口(如系统)的NuGet包。绘图,系统。目录服务等。).ASP.NET核心2.0引入了两个框架,而这两个框架是。NET核心1.0,即Razor Pages和SignalR。实体框架核心开始支持延迟加载,这是一种流行的实体框架功能。那个。NET Core 2继续推。NET成为最快的完整堆栈框架之一。由一家独立公司运营的TechEmpower基准排名。NET Core在原纯文本性能领域排名第7,在Web和数据性能的Fortunes测试中排名第6,击败Java servlet和node.js (bit.ly/2PEE1l1)。网络核心3.0

那个。NET Core 3.0是的下一个主要版本。NET Core平台。它增加了许多令人兴奋的功能,例如使用Windows窗体、Windows Presentation Foundation和Entity Framework 6支持Windows桌面应用程序。对于Web开发,它开始支持使用C#通过Razor组件(以前称为Blazor)生成客户端Web应用程序。此外,它还支持C# 8.0和。NET标准2.1。

我们正在中增加对物联网方案的支持。NET核心3.0。硬件引脚(用于控制设备和读取传感器数据)现在可以在树莓Pi和类似设备上进行编程,并且可以通过串行端口在所有支持的操作系统(例如,使用树莓Pi或Arduino)上进行通信。在这个版本中,我们还增加了对ARM64的物联网设备支持,以补充现有的ARM32功能。

那个。NET Core 3.0也将完全支持ML.NET,这是一个为生成的开源机器学习框架。NET开发人员。ML.NET大力推动Azure机器学习、Windows Defender和PowerPoint设计理念。使用ML.NET,许多常用的机器学习方案可以被添加到应用中,例如情感分析、建议、预测、图像分类等。要了解更多信息,请访问bit.ly/2OLRGRQ.

我们最近发布了的第一个预览版。NET核心3.0。了解更多。NET Core 3.0和试用版预览版,请访问aka.ms/netcore3preview1.

桌面(WinForms和WPF)和开源

WinForms和WPF是最常用的两个。NET应用程序类型,被数百万开发人员使用。那个。NET Core 3.0开始支持WinForms和WPF,并将Windows桌面开发引入。NET核心。那个。NET Core一直都是开源的。在GitHub中,这两个框架和其他框架一样都是开源的。净内核。历史上第一次,客户将能够见证这些框架的开放开发,甚至可以通过实时提问、修复bug或帮助开发GitHub中的新功能来提供帮助。XAML图书馆也将是开源的。XAML群岛允许您在WinForms和WPF应用程序中使用这些控件。

许多现有的WinForms和WPF应用程序使用实体框架来访问数据,所以。NET Core也支持实体框架6。

您可能想知道为什么要在上面构建桌面应用程序。NET核心。很简单:您可以从中的所有增强功能中受益。NET核心。应用程序可以在最新版本的框架上生成,无需安装。NET核心,以及应用程序和。NET Core可以发布到。EXE。那个。NET Core在设计时考虑了并行支持,因此可以在一台计算机上安装多个版本,并且可以将应用程序锁定到设计时的目标版本。此外,由于这种并行性,API在。NET Core(包括WinForms和WPF)可以在不冒损坏应用程序的风险的情况下进行改进。

ASP。净核心3

然而。NET Core 3.0并不完全与桌面相关。还有许多为网络设计的令人兴奋的新功能。接下来,我们将介绍我们正在开发的几个功能。

客户经常问的一个问题是如何在中获得RPC体验。NET Core(就像在。NET远程和窗口通信基金会)。我们正在参与gRPC (grpc.io)项目,以确保gRPC能够为提供一流的支持。NET开发人员。

今年早些时候,我们开始了一项实验。NET(我们称之为Blazor)进行客户端Web开发。使用Blazor,您可以编写直接在基于WebAssembly的环境中运行的Web UI组件。NET运行时,而无需编写一行JavaScript。使用Razor语法创作组件,这些组件被编译成常规的。NET程序集以及代码。然后是程序集和基于WebAssembly的。NET运行时被下载到浏览器中,它们可以只使用开放的Web标准(没有任何插件或代码转换)来执行,如图1所示。

图1:使用Blazor的客户端网络开发

你也可以用。NET Core在服务器上运行相同的组件,其中所有UI交互和DOM更新都是通过SignalR连接来处理的,如图2所示。执行后,组件跟踪DOM所需的更新,并通过SignalR连接将要应用的更新发送到浏览器。用户界面事件使用相同的连接发送到服务器。这种模式的优势有几个:下载量更小,代码集中在服务器上,并且得益于在上面运行组件的所有功能和性能优势。NET核心。

图2:使用信号器在服务器上运行用户界面组件

和。NET Core 3.0,我们将Blazor组件模型集成到ASP.NET Core中。我们称这个集成组件模型为“Razor组件”。Razor组件开启了一个新时代:使用ASP.NET Core的可组合UI,以及使用。NET。和。NET Core 3.0,Razor组件最初是作为可独立路由的组件或Razor页面和视图使用的组件在服务器上运行的。但是,同样的组件也可以在客户端的WebAssembly上运行。同时发展。NET Core 3.0,我们将继续做以下工作:支持使用基于解释器。NET运行时在WebAssembly上运行Razor组件,预计将在后续版本中提供。之后,我们还计划发布对的完全预编译支持。NET代码转换为WebAssembly,这将显著提高运行时性能。

英孚核心3.0

LINQ是最受欢迎的。NET功能,这使得编写数据库查询时不用离开所选语言就很容易。同时,它可以使用丰富的类型信息来获取IntelliSense和编译时类型检查。然而,LINQ也支持编写几乎无限数量的复杂查询,这对于LINQ提供商来说一直是一个巨大的挑战。EF Core通过支持选择可以转换成SQL的查询部分,然后在内存中执行剩余的查询,部分解决了这个问题。在某些情况下,这是可取的,但在许多其他情况下,这可能会导致非常低效的查询,直到应用程序投入生产后才会被发现。

在EF Core 3.0中,我们计划深度改变LINQ实现的工作原理和测试方法,旨在提高其可靠性(比如避免破坏补丁版本中的查询);让它把更多的表达式转换成SQL正确地;在更多情况下生成高效查询;并防止在投入生产之前无法检测到的非常低效的查询。

我们一直在努力为EF Core开发一个Cosmos DB提供者,让开发者熟悉EF编程模型,轻松将Azure Cosmos DB作为应用数据库的目标。目标是利用Cosmos DB的一些优势,例如全局分布、“始终在线”的可用性、灵活的可扩展性和低延迟,甚至使其更易于。NET开发人员来访问它。该提供商将为宇宙数据库中的SQL应用编程接口启用大多数英孚核心功能,如自动更改跟踪、LINQ和值转换。

我们计划在EF Core 3.0中增加的其他功能包括:属性包实体(将数据存储在索引属性中而不是常规属性中的实体);能够将数据库视图逆向工程成查询类型;以及与新的C# 8.0特性的集成,例如IAsyncEnumerableT支持和可空引用类型。

我们理解,对于许多使用旧版本EF的现有应用程序来说,移植到EF Core是一项巨大的工作量。正因为如此,我们还移植了EF 6,这样我们就可以使用了。NET核心。网络标准2.1

根据。NET标准,可以为所有人创建库。NET实现,而不仅仅是。NET核心,还包括Xamarin和Unity。英寸NET Standard 1.x中,我们只对各种实现中常用的API进行建模。英寸NET标准2.0,我们专注于简化移植现有。 NET框架代码。NET Core,它不仅带来了额外的20000个API,还带来了兼容模式(使其易于引用。 NET框架库NET基于标准的库,而无需重新编译它们)。这两个版本的标准几乎没有新的组件,因为所有的API都存在。NET应用编程接口。

英寸NET Standard 2.1,这种情况已经改变:我们添加了大约3000个几乎全新的API,这些API是作为的开源开发的一部分引入的。NET核心。通过将它们添加到标准中,我们将它们介绍给所有人。NET标准实现。

新的宣传短片包括:

斯潘特:在。NET Core 2.1中,我们添加了SpanT,这是一种类似于数组的类型,允许托管和非托管内存以统一的方式表示,并且支持切片而不复制。SpanT是中大多数与性能相关的改进的核心。NET核心2.1。因为它允许以更有效的方式管理缓冲区,所以它可以帮助减少分配和复制。要了解更多关于这种类型的信息,一定要阅读Stephen Toub关于SpanT的精彩文章(msdn.com/magazine/mt814808)。

值任务和值任务:输入。NET Core 2.1,基本内容中与功能相关的最重要的改进可以支持高性能解决方案(bit.ly/2HfIXob),并使异步/等待更加高效。ValueTaskT已经存在,这使得在操作同步完成时返回结果变得容易,而无需分配新的TaskT。英寸NET Core 2.1,我们对这个功能做了进一步的改进,同时提高了它的易用性,让它有了对应的非泛型ValueTask,从而减少了操作必须异步完成时的分配,现在Socket和NetworkStream都在使用这个功能。

一般实用API:因为。NET Core是开源的,我们跨基类库增加了很多小函数,比如System。用于合并哈希代码的哈希代码,或者System.String上的新重载。NET Core,并且几乎所有的都被添加到。NET标准2.1。

参见。NET标准2.1公告(bit.ly/2RCW2fX)了解更多详细信息。

C# 8.0

C# 8.0是C#的下一个版本,它在几个主要方面改进了语言。可以为空的引用类型有助于防止空引用异常,并改进空安全编码实践。您可以选择启用以下功能:为字符串类型的变量或参数赋值null时会出现警告(例如)。要为空,必须使用“字符串?”可以为空的引用类型。

异步流对异步数据流执行的操作是异步/等待对单个异步结果执行的操作。新的框架类型IAsyncEnumerableT是IEnumerableT的异步版本,它也可以执行foreach并产生返回:

公共静态异步IAsyncEnumerableT FilterAsyncT(此IAsyncEnumerableT源,FuncT,Taskbool谓词){ await foreach(源中的T元素){ if (await谓词(元素))产生返回元素;}}除了其他功能,在默认接口成员实现的帮助下,接口可以在不中断现有实现者的情况下添加新成员。Switch表达式可以保证更简洁的模式匹配,不仅可以递归模式,还可以深入挖掘测试值。要了解更多关于C# 8.0的信息,请访问aka.ms/csharp8.

将如何?NET框架和。NET Core开发?

那个。NET Framework是安装在十几亿台计算机上的. NET实现,所以兼容性需要尽可能的保持。因此,它的更新速度比的慢。NET核心。甚至安全修复和错误修复也会导致应用程序中断,因为应用程序依赖于旧的行为。我们将确保。NET Framework始终支持最新的网络协议、安全标准和Windows功能。

那个。NET Core是一个开源的、跨平台的、快速更新的。 NET版本鉴于这种并行的性质,我们可以将我们不能冒险的更改应用到。NET框架。也就是随着时间的推移。NET Core将增加新的API和语言函数,而。NET框架不会。

应该没有迁移到的压力。NET Core,如果存在的话。不需要利用任何。NET核心特性。NET框架和;NET Core将得到全面支持;那个。NET框架始终是Windows的一部分。即使在微软内部,我们也有许多基于。NET框架,并将始终基于。NET框架。然而,展望未来。NET核心和。NET框架将包含不同的函数。

摘要

那个。NET Core 3.0预计将于2019年下半年发布。它将为Windows桌面开发提供WinForms和WPF的开源版本。还将包括物理框架6。此外,ASP.NET核心,实体框架核心,NET标准和C#都将经历重要的更新。为了新的。NET应用程序,您应该认真考虑使用这个版本的。NET核心。欲了解更多信息,请访问aka.ms/netcore3preview1.

我们期待着……的未来。NET,并将向添加更多工作负载。NET核心。我建议你试试预览版的。NET Core 3.0并向我们发送反馈。

原地址:什么来了。网络核心3.0

原作者:斯科特亨特

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:解释中的新变化 NET Core 3.0的细�是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。