展望 .NET 6
本文讨论了 .NET 6 中预计将出现的一些出色新特性,并探讨了一些与这些更改和特性高度契合的推荐插件。
微软于2016年6月27日发布 .NET Core 1 时,使 .NET 框架开源。Miguel de Icaza 将 .NET Core 描述为“基于简化版类库的 .NET 重新设计版本”。微软 .NET 项目经理 Immo Landwerth 解释说,由于其跨平台支持,.NET Core 将成为“所有未来 .NET 平台的基石”。
.NET Core 的下一个主要版本是 .NET 5.0。此版本紧随 .NET Core 3.1 之后。微软将此版本命名为 .NET 5.0 而不是 .NET Core 4.0,原因有二。首先,是为了避免与 .NET Framework 4.x 混淆。其次,是为了强调这是 .NET 的即时实现。因此,“Core”从名称中删除。
.NET 5.0 版本比 .NET Core 和 .NET Framework 支持更多的应用程序和平台。与 .NET Core 3.1 相比,它也有了巨大的改进。
许多人认为 .NET 5 是微软将其 .NET 重建为跨平台、开源项目的最后一步。然而,.NET 5 也是微软新发布模式的第一步。在不久的将来,微软承诺每年都会发布一个新版本的 .NET,每个版本都在11月发布。
随着 .NET 6 预览版的发布,我们看到了 .NET 5 上令人印象深刻的功能和改进。它针对 .NET 5 中不存在的功能,例如下一代 Xamarin。这降低了桌面和原生移动开发之间的障碍。这意味着许多不同的 Windows UI 工具包之间将更好地集成。在 .NET 6 中还有许多其他重要的和较小的增强功能。微软在其官方 .NET 产品路线图上逐点列出。
有关 .NET 6 当前开发计划、变更和挑战的更多信息,请访问 Microsoft's Themes of .NET。
本文讨论了 .NET 6 中预计将出现的一些出色新特性,并探讨了一些与这些更改和特性高度契合的推荐插件。它还探讨了屡获殊荣的用于 Web、桌面和移动的 .NET 和 JavaScript UI 控件集 GrapeCity ComponentOne 将如何与 .NET 6 无缝集成,以减少开发时间、支持工具箱和项目模板等等。
.NET 多平台应用 UI (MAUI)
Xamarin.Forms 是一个开源的跨平台框架,用于使用 .NET 从单一共享代码库构建 iOS、Android 和 Windows 应用程序。它最初由 Mono 工程师开发,微软于2016年收购了它。
它为跨平台开发提供了 WinUI 的替代方案。其跨平台策略是 XAML 对 iOS 和 Android 原生控件的支持,以及其自身的跨平台 Xamarin.Forms。Xamarin.Forms 是一个模型-视图-视图模型 (MVVM) 开发平台。它内置了页面、移动应用程序布局和控件,使我们能够使用单一的、高度可扩展的 API 构建应用程序。它允许我们子类化和自定义控件、布局、页面和单元格,以使我们的应用程序达到像素完美。
.NET 6 使用 .NET 多平台应用程序 UI。它是一个基于 Xamarin 构建的现代化 UI 工具包。但作为 .NET 6 统一的一部分,它具有改进和新功能。它使我们能够以最小的开销,使用单个项目和单个代码库构建可部署到多个设备的应用程序。
使用 .NET 多平台应用 UI,开发者可以在各种平台和设备上提供一致的应用体验。移动和桌面应用可以使用单个共享代码库来针对 Android、iOS、macOS 和 Windows 操作系统。
.NET 6 的多平台移动和跨平台支持集成并扩展了 Xamarin.Forms 工具包。它还扩展了 Xamarin.Essentials 库,以改进跨平台 UI 控件。使用 MAUI,我们可以使用多种设备功能。这包括设备传感器、照片、联系人、身份验证和安全存储。
使用 .NET 6 构建应用程序很简单,因为它附带了示例移动项目和安装说明。它还具有 C# 热重载和现有的 XAML 支持,以实现更快的开发体验。此外,我们可以从一个地方管理特定平台需求的资产。
MAUI 的更改和改进侧重于提高应用程序性能、用户体验、控制,以及提高开发速度。在 MAUI 应用程序中使用 ComponetOne 等 UI 插件将加快开发过程。除了 .NET MAUI 已有的功能外,它还将改善应用程序用户体验。
WPF 在 Arm64 上的支持
Windows Presentation Foundation (WPF) 是一个与分辨率无关的 UI 框架。它使用一个基于矢量的渲染引擎,旨在利用现代图形硬件。它提供了一整套应用程序开发功能:可扩展应用程序标记语言 (XAML)、数据绑定、2D 和 3D 图形、动画、模板、文档、媒体、文本和排版。WPF 是 .NET 的一部分,因此我们可以轻松地将其与 .NET API 的其他元素结合使用。
在 .NET 6 中,Arm64 仍然是一个重要的关注点,因为它与 .NET 5 相比有了显著的性能改进。与 .NET 5 不同,.NET 6 主要关注其 功能启用,以使其性能无缝。与 .NET 5 中在 Arm 设备上使用 x64 仿真支持 WFP 不同,它还开箱即用地支持 Windows Form 和 Windows Presentation Framework (WFP)。
在 Mac 上,Apple Silicon 支持是 .NET 6 的一个关键交付成果。.NET 开发团队自2020年从 Apple 获得 开发者过渡套件 (DTK) 以来,一直致力于实现对 Apple Silicon 芯片的支持。
对 Apple Silicon (Arm64) 芯片(原生和模拟)的支持在 .NET 6 中取得了成功。但现在,它只支持控制台应用程序 ASP.NET Core、Mac 客户端应用程序(Mac 和 Mac Catalyst)和 .NET SDK。Apple 使用 x64 模拟为 .NET 5 和更早的 .NET Core 版本构建了这些。
.NET 6 预览版1记录了 Apple Silicon 的首次启用。但是,正如微软 建议 的那样,这些版本目前可以被认为是 alpha 质量。它们仍然有几个设计问题需要解决,并且需要大量的验证以确保高质量的产品。
Blazor 桌面版
Blazor 已成为构建 .NET Web 应用程序的一种明智方式。这是因为它与 UI 库(例如 ComponentOne)的无缝集成和易用性,可以在服务器和客户端使用现有的 C# 编程技能。这使得应用程序开发生命周期更加高效。
Blazor 对 .NET 的支持首先是在服务器端。然后是在浏览器中使用 WebAssembly。现在,.NET 6 允许编写 Blazor 桌面 应用程序。Blazor 桌面允许您创建混合客户端应用程序,将 Web 和 原生 UI 结合到一个原生客户端应用程序中。它的目标是希望为我们的用户提供丰富的客户端和离线体验的 Web 开发者。这些体验也可以通过使用 ComponentOne 等 UI 库来增强。
Blazor 是一个应用程序编程模型。它具有适应性,我们可以通过多种方式执行它。Blazor for desktop 的工作方式与 Electron 类似。它将有一个 WebView 控件,用于呈现来自嵌入式 Blazor Web 服务器的内容。这可以同时提供 Blazor 和其他 Web 内容,如 JavaScript、CSS 等。
Blazor 桌面版在其默认配置下不会使用 Blazor Web Assembly。这是因为没有明显的技术或用户体验原因在桌面应用中使用 WebAssembly。另一个 .NET 6 的改进是 Blazor WebAssembly 性能。
.NET 6 中的 Blazor 桌面版提供了多种选择来构建我们的应用程序。我们可以选择对客户端应用程序体验的所有方面(除了最外层的原生应用程序容器(例如标题栏))使用 Blazor 和其他 Web 技术。我们还可以将 Blazor 桌面版用于原生应用程序(例如 WPF)中的特定功能,例如我们已为基于 Blazor 的网站实现的个人资料页面。介于两者之间的所有选择都同样可能。
.NET 6 团队强调,他们最初为 .NET 应用程序构建了 Blazor 桌面版,但没有技术原因可以阻止我们在使用其他应用程序堆栈构建的桌面应用程序中使用 Blazor。例如,我们可能会使用 Swift。
Blazor 桌面版位于新的 .NET 多平台应用 UI 之上。它依赖于该 UI 堆栈来提供具有出色性能的原生应用程序容器和原生控件。
.NET 6 中的 Blazor 在启动和吞吐量性能方面与其他桌面解决方案相当。对于那些热爱 Web 技术的人来说,它是构建桌面应用程序的绝佳选择。
性能改进
我们还可以期待 .NET 6 的性能改进。根据 微软官方博客,微软正在启动一个名为“快速内部循环”的新项目。项目的第一部分是通过一系列与性能相关的项目显著加快构建速度。第二部分是创建新系统,使完全跳过构建阶段成为可能。
微软表示,他们设想将 Xamarin 团队在 XAML 热重载功能方面的创新推广为通用的 .NET 功能。它不仅仅适用于 XAML,还适用于 C# 中间语言。
更好的容器化支持
微软 .NET 6 开发团队明确指出,容器是该团队日常关注的焦点,既是 构建基础设施 的基础,也是一种 产品场景。他们指出,即使当前的 .NET 性能测试 也使用容器。这是因为计划在 .NET 6 中对容器进行多项改进。其中一些计划的改进包括:
- 改进 容器中的扩展,更好地支持 Windows 进程隔离容器,重点关注一种新的容器性能测试形式,主要关注密度和机器总性能
- 使用配置文件引导优化(PGO)减小容器镜像大小
- 通过使用 Ready-to-Run 版本气泡 改进启动和吞吐量性能
- 默认使用 现代向量指令 提高启动和吞吐量性能
- 通过 Ready-to-Run 复合镜像启用大页面支持
除了第一点,这些功能都依赖于 crossgen2,它是 crossgen 工具 的替代品。它们实现了两个目标:提高 crossgen 开发效率,并启用 crossgen 目前无法实现的一系列功能。
容器最重要的好处之一是 .NET 开发者可以构建比使用 .tar.gz、.deb 或 .msi 可交付物更具主观性的配置。
Alpine 3.13(或更高版本)、Debian 11 ("bullseye") 和 Ubuntu 20.04 将作为 .NET 6 镜像的基础。.NET 将不支持更新版本的 Ubuntu(在容器中),直到 Ubuntu 22.04。
结论
.NET 6 版本将与平台和开发工具无缝集成,以提供更好的开发和用户体验。
在 .NET 6 中的 GrapeCity ComponentOne UI 控件应用于 WPF、Blazor 和 Xamarin 应用程序中,显著缩短了任何项目的开发时间。它使应用程序更加健壮、响应迅速和可扩展。这些组件目前与所有版本的 .NET 高效集成,并将在 .NET 6 发布时完美集成。GrapeCity 团队不断致力于新功能,以增强开发和用户体验。
在 .NET 和 .NET 应用程序中 试用 GrapeCity ComponentOne UI 控件,用于 Web 应用程序。探索 GrapeCity 如何增强下一个 .NET 应用程序。