.NET Core 3 给 .NET Core 带来了不少新东西。新版本包括 C# 八、WinForms 和 Entity Framework 6。编程
.NET Core 3 将专门针对微服务,而且是针对云原生应用程序的构建而设计的。浏览器
开发人员能够在其 ASP .NET Core 3.0 应用程序中编写高性能、基于契约的 RPC 服务。安全
ASP .NET Core 3.0 可以使用 AOT(提早编译),从而使开发人员的应用程序可以本机化且具备高性能。服务器
对于 bug、性能、安全性和将来的标准,微软将继续更新其 .NET 框架( .NET Framework)。app
本文是探讨 .NET Core 优点的系列文章之一,它不只能够帮助传统的 .NET 开发人员,还能够帮助全部想要为市场提供可靠、高性能且经济的解决方案的技术人员。框架
随着 .NET Core 3.0 的发布,微软拥有了通用、模块化、跨平台和开源平台的下一个主要版本,该版本最初是在 2016 年发布的。.NET Core 最初是为了支持下一代 ASP .NET 解决方案而建立的,可是如今它驱动了许多其余场景,包括物联网、云和下一代移动解决方案,而且是这些场景的基础。3.0 版本增长了许多经常使用特性,好比对 WinForms、WPF 和 Entity Framework 6 的支持。机器学习
.NET Core 3.0 在 2019 年 9 月 23 日至 25 日的 .NET Conf 上正式发布,这是一个免费的虚拟开发者活动。在发布以前,Chris Woodruff 与 .NET 平台的项目负责人 Scott Hunter 一块儿讨论了开发人员对 .NET Core 3 的指望。异步
你在 .NET Core 团队中担任什么角色?编程语言
Scott Hunter:我是 .NET 平台的项目负责人。我有一个项目管理团队,负责监督 .NET Core、 .NET 框架、 .NET 工具、Web 工具、 .NET 语言(C#、F#、VB)、ASP .NET、Entity Framework、 https://dot .NET 和 .NET 社区。团队中的项目经理要确保咱们为客户构建的是正确的产品,而且帮助推进 .NET 社区的发展。编辑器
在咱们深刻探讨 .NET Core 以前,请先介绍一下 .NET Core 的背景知识以及该框架的来源。
Hunter:.NET Core 是于 2014 年启动的,当时做为一个团队,咱们意识到,要使 .NET 紧跟将来 20 年,咱们须要作一些变化,而这些变化没法在 .NET 框架中实现。由于 .NET 框架是 Windows 的一部分,而计算机上只能有一个 Windows 版本。所以,它须要保持高度兼容,这样它才不会破坏世界上 10 亿多台 Windows 机器上安装的任何应用程序。做为 Windows 的一部分,咱们一年只能发布两次,这是 Windows 主要更新的发布周期。同时,开源正在接管软件,全部其余的编程平台都是开源的。咱们还看到一些开发人员在使用 Mac,一些公司在 Linux 上托管他们的软件,因此咱们须要跨平台。
.NET Core 是 .NET 的一个版本,它是开源、跨平台的,而且多个版本能够同时安装在一台计算机上。它的工具被设计成优先使用 CLI(Command Line Interface,命令行界面),所以开发人员可使用任何文本编辑器在任何计算机上使用 .NET Core 进行开发。若是使用的是传统工具,如 Visual Studio、Visual Studio for Mac 和 Visual Studio Code,咱们也对它进行了很好的支持。
在 3.0 版本中,大家对 .NET Core 有什么计划吗?
Hunter:.NET Core 3 给 .NET Core 带来了不少新东西。有数百万的开发人员使用 WinForms 和 WPF 来构建桌面应用程序,所以咱们将这两个框架都添加到 .NET Core 中了。许多桌面应用程序使用 Entity Framework 6,因此咱们也添加了它。由于 .NET Core 一直以来都是基于开源的,因此咱们在 12 月份宣布,咱们也将对这两个框架进行开源。此外, .NET Core 3 还包括 C# 八、 .NET Standard 2.1 等。
大家对 ASP .NET Core 3.0 有什么计划吗?
Hunter:不少时候,当咱们谈论 .NET Core 3.0 时,咱们都会谈到新的桌面支持,可是它在 ASP .NET 中也有不少创新。首先,虽然咱们没有恢复 WCF,可是咱们知道许多开发人员但愿在他们的应用程序中编写高性能、基于契约的 RPC 服务。对于这些工做需求,咱们正在支持开源的 gRPC 项目。咱们正在努力使 .NET 实现成为第一个类,由于它是 gRPC,因此它也能够与许多其余编程语言一块儿工做。有一个新的与微服务相关的 Worker Service 项目,用于构建轻量级后台 worker,它能够在诸如 Kubernetes 之类的编排器下运行。此外,虽然 ASP .NET 对构建 API 已经有了很好的支持,但咱们但愿可以轻松地将丰富的安全性添加到 API 上,所以咱们正在新增桥接器,以便开源的 Identity Server 项目能使用咱们的 API。最后,咱们正在研究 Blazor,它容许开发人员使用 Web Assembly 在浏览器和服务器中使用 .NET 构建高性能的 Web 应用程序。
Azure 是怎样影响大家 .NET Core 计划的呢?
Hunter:Azure 不会直接影响咱们的 .NET Core 计划。可是,咱们但愿确保 .NET Core 是构建云原生应用程序(包括微服务和基于容器的应用程序)的最佳平台。传统上,咱们大多会认为 .NET 是使用在 Web 和桌面 UI 上下文中的,咱们但愿改变你们的这种见解。虽然你们如今能够构建此类应用程序,可是咱们并无明确说明。咱们将为构建 Worker Service 项目提供 .NET Core 3.0 和模板。咱们但愿该平台能够支持诊断和调试,即便你是在云上以超大规模运行应用程序。
你最喜欢 .NET Core 的哪些部分,以及在将来你但愿它什么地方有所改变?
Hunter:对于 .NET Core,我最喜欢的部分多是 CLI(命令行界面)、跨平台支持和开源。仅仅依靠一台基于 Windows、Mac 或 Linux 的机器,跳转到 CLI 并使用你选择的编辑器构建一个应用程序,这在过去是你不会想用 .NET 来作的事情 。此外,可以访问 GitHub 并观看由微软和社区共同开发的产品也是很好的。向前看,我老是为 .NET 启用新的工做需求而感到兴奋。我对 AOT(Ahead of Time Compile,提早编译)感到兴奋,它将为你提供相似于 Go 语言的小型本机高性能应用程序。
.NET Core 成为 OSS 有什么惊喜吗?
Hunter:咱们在 2014 年开源了 .NET Core,这对咱们来讲在开源领域彷佛已经很晚了。咱们不肯定社区是否会支持这一运动,可是有超过 3700 家微软以外的公司作出了 60000 多份贡献,这一运动取得了成功。为了使 .NET Core 成为最快的框架之一,社区作了大量的工做。
全部这些对 .NET 框架意味着什么呢?
Hunter:.NET 框架是 Windows 操做系统的一个组成部分。Windows 依赖于它,微软的许多大型产品和服务也依赖于它,此外还有数百万的客户应用程序也在使用它。由于在 Windows 上只能安装一个版本,因此它有一个要求很是高的兼容性条栏,而且咱们能够在其中进行有限的更改。对于它的 bug、性能、安全性和将来的标准,咱们将持续更新。将来的创新将发生在 .NET Core 中;该平台的并行特性使咱们可以快速移动它,且不会有破坏应用程序的风险。
对于在项目中没有使用 .NET 和 C# 的开发人员,为何应该关注 .NET Core 呢?
Hunter:今天,许多开发人员选择使用最适合于对应工做的可用工具。若是你看看 TechEmpower 基准测试,会发现 .NET Core 是最快的框架之一。它是由 C# 语言驱动的,C# 具备诸如异步 / 等待等使人惊叹的特性,可使异步编程变得更容易(而且许多其余平台已经复制了它),而且它还支持 F# 函数语言。它也有一些很棒的开发工具,不管是 Visual Studio for Windows、Visual Studio for Mac、Visual Studio Code,仍是 Jet Brains Rider,都很棒。
关于 .NET Core 2.二、3.0 及更高版本,还有什么须要注意的吗?
Hunter:咱们谈了不少关于通用平台和一些 .NET 的历史。在 .NET 中还有一些其余使人兴奋的开发,好比 Blazor,它是一种编程模型,容许开发人员在服务端或客户端都能使用 .NET 构 Web 应用程序。在客户端,咱们将 .NET 编译成 Web Assembly,以便在浏览器中得到原生速度,并在客户端和服务端上都具备 .NET 的全部强类型。咱们还经过 ML .NET 在 .NET 中添加了对机器学习的支持 ,ML .NET 是咱们的开源 .NET 机器学习库。这项技术已经在微软产品中使用不少年了,如今咱们正在向公众开放。