本文包含开始为 Windows 生成应用所需的信息。
Windows 提供各种语言、框架和工具来生成应用,包括 WinUI、WPF、C++、C#、.NET 和各种跨平台框架。 本文中介绍的信息可帮助你确定哪种选项最适合你。
WinUI
建议使用 WinUI 和Windows 应用 SDK 来创建外观出色的应用,并利用最新的 Windows 版本。 如果你是 Windows 开发的新手,或者刚开始开发新的 Windows 应用,WinUI 将为你提供创建出色的
Windows 11 应用
所需的资源。
WinUI
是基于 XAML 标记的用户界面层,包含用于生成 Windows 应用的新式控件和样式。 作为 Windows 应用 SDK 的原生 UI 层,体现了
Fluent Design
,为每个 Windows 应用提供客户期望的流畅感觉。
WinUI 入门
Windows 应用 SDK
是一组新的开发人员组件和工具,它们代表着 Windows 应用开发平台的最新发展。 Windows 应用 SDK 提供一组统一的 API 和工具,可供 Windows 11(向下到 Windows 10 版本 1809)上的桌面应用以一致的方式使用。
虽然 WinUI 是原生 UI 层,但可以将 Windows 应用 SDK与 WPF、WinForms 或 Win32 应用配合使用。 如果你以前已经为 Windows 开发了应用,但想要在现有应用中开始使用 Windows 应用 SDK,请参阅
特定于框架的指南
。
WPF 是一个完善的框架,适用于有权访问
.NET
或
.NET Framework
的 Windows 桌面应用程序。 与 WinUI 一样,它也使用 XAML 标记将 UI 与代码分离。 WPF 提供一套完善的应用程序开发功能,这些功能包括控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式。 WPF 属于 .NET,因此可以生成整合 .NET API 其他元素的应用程序。
此外,现在可以将沙盒环境集成到打包的 WPF 应用程序中,从而提供额外的安全层。 由于新的
Win32 应用隔离
安全功能,此增强几乎不需要对代码进行任何更改。
WPF 入门
如果有
WPF .NET
应用,还可以访问
Windows 应用 SDK
提供的新式 Windows 平台功能和 API。 有关详细信息,请参阅
在 WPF 应用中使用 Windows App SDK
和
实现桌面应用的现代化
。
如果需要更多帮助来决定哪个框架是应用的最佳选择,请参阅
为 Windows 开发项目选择最佳应用程序框架
培训模块。
许多适用于 Windows 的应用都是使用
Win32
、
Windows 窗体
或
UWP
编写的。 这些框架中的每一个都得到了支持,并将继续接受错误、可靠性和安全性修补程序,但对新功能和样式的投资程度各不相同。 有关这些应用类型的详细信息,请参阅以下选项卡。
Win32
Windows 窗体
Win32 桌面应用(有时也称为经典桌面应用)是本机 Windows 应用程序的原始应用类型,需要具备对 Windows 和硬件的直接访问权限。 这使得 Win32 应用类型成为需要最高级别性能和直接访问系统硬件的应用程序的理想选择。
与在托管运行时环境上(如 WinRT 和 .NET)相比,将 Win32 API 与 C++ 结合使用可以实现最高级别的性能和效率,方法是通过使用非托管代码对目标平台进行更多控制。 但是,对应用程序的执行进行这种级别的控制需要更加谨慎和更集中的注意力才能正确执行,同时,需牺牲开发效率以提高运行时性能。
以下是 Win32 API 和 C++ 提供的一些主要功能,使你能够生成高性能应用程序。
硬件级优化,包括对资源分配、对象生存期、数据布局、对齐、字节封装等的严格控制。
通过内部函数访问面向性能的指令集,如 SSE 和 AVX。
使用模板进行高效且类型安全的泛型编程。
高效且安全的容器和算法。
DirectX,特别是 Direct3D 和 DirectCompute。
使用
C++/WinRT
创建新式桌面 Win32 应用,这些应用具有对 Windows 运行时 (WinRT) API 的一级访问权限。
此外,现在可以将沙盒环境集成到 Win32 应用程序中,从而提供额外的安全层。 由于新的
Win32 应用隔离
安全功能,此增强几乎不需要对代码进行任何更改。
Win32 入门
还可以访问 Windows App SDK 提供的新式 Windows平台功能和 API。 有关详细信息,请参阅
在现有项目中使用 Windows 应用 SDK
和
实现桌面应用的现代化
。
Windows 窗体是用于托管型 Windows 应用程序的原始平台,具有一个轻型 UI 模型和对
.NET
或
.NET Framework
的访问权限。 它擅长帮助开发人员快速开始构建应用程序,即使对于刚接触该平台的开发人员也是如此。 这是一种基于窗体的快速应用程序开发平台,其中包含大量内置的可视化和非可视化拖放控件。 Windows 窗体不使用 XAML,因此,如果决定以后将应用程序重写为 WinUI,则需要完全重写 UI。
此外,现在可以将沙盒环境集成到打包的 Windows 窗体中,从而提供额外的安全层。 由于新的
Win32 应用隔离
安全功能,此增强几乎不需要对代码进行任何更改。
Windows 窗体入门
如果有
Windows Forms .NET
应用,还可以访问
Windows 应用 SDK
提供的新式 Windows 平台功能和 API。 有关详细信息,请参阅
在 Windows 窗体 (WinForms) 应用中使用 Windows 应用 SDK
和
实现桌面应用的现代化
。
通用 Windows 平台 (UWP) 为通用 Windows 平台中的所有设备提供通用类型系统、API 和应用程序模型。 UWP 不仅可以用于为 Windows 电脑创建桌面应用程序,同时也是唯一受支持的可用于编写跨 Xbox、HoloLens 和 Surface Hub 运行的单一原生通用应用的平台。 UWP 应用可以是本机应用,也可以是托管应用。
不推荐使用 UWP 开发新的桌面应用。 尽管 UWP 得到了支持,并将继续接受错误、可靠性和安全性修补程序,但我们不会优先考虑 UWP 的新功能。
UWP 入门
你将无法访问由
Windows 应用 SDK
或 .NET 6 及更高版本提供的 API。 若要使用 Windows 应用 SDK,必须将 UWP 应用迁移到 WinUI 和 Windows 应用 SDK。 有关详细信息,请参阅
迁移到 Windows App SDK
。
如果需要跨平台运行应用,请考虑使用
.NET MAUI
、
渐进式 Web 应用 (PWA)
或
适用于 Windows 的 React Native
。 还有许多其他选择(
此处为常用选项的列表
),但这些都是一些不错的起点。
.NET MAUI 利用 Windows 上 WinUI 的强大功能,同时在其他操作系统上启用执行。 使用适用于 Windows 的 React Native,可以编写在 Windows 10 和 Windows 11 支持的所有设备(而不仅仅是电脑)上运行的应用。 另一个跨平台选项是渐进式 Web 应用 (PWA) 网站,功能类似于在 Windows 和其他受支持平台上运行的已安装的本机应用,而在浏览器类似于常规网站。
有关详细信息,请参阅以下选项卡。
.NET MAUI
渐进式 Web 应用 (PWA)
Windows 版 React Native
.NET 多平台应用 UI (MAUI) 是一个开源的跨平台框架,用于构建 Android、iOS、macOS 和 Windows 应用程序,这些应用程序能够集中从一个 .NET 代码库中利用各平台的本机 UI 和服务。 由于 .NET MAUI 偏好平台本机体验,因此它使用 WinUI 和 Windows 应用 SDK,以便应用能够在 Windows 上获取最新的用户体验。 这使你的应用能够访问通过 WinUI 提供的所有内容,还能够访问其他平台。
如果存在以下情况,则很适合选择 .NET MAUI for Windows:
你希望尽可能多地在移动和桌面应用程序之间共享 .NET 代码。
你希望将应用程序传送到提供本机平台体验的其他桌面和移动目标,而不只是 Windows。
你希望使用 C# 和/或 XAML 来生成跨平台应用。
你正在使用 Blazor 进行 Web 开发,并想要在移动或桌面应用程序中包含其中的所有或部分内容。
.NET MAUI 入门
有关 .NET MAUI 的详细信息,请访问以下链接:
.NET MAUI 文档
GitHub 上的 .NET MAUI
.NET MAUI 产品路线图
使用 .NET MAUI 生成 Windows 应用
用于学习 .NET MAUI 的资源
视频系列 - 面向初学者的 .NET MAUI
生成 2022:使用 .NET 和 Visual Studio 为任何设备生成本机应用
渐进式 Web 应用 (PWA)
提供对开放 Web 技术的访问以提供跨平台互操作性。 PWA 为用户提供针对其设备自定义的类似应用的体验。 PWA 网站
逐步增强
,功能类似于在受支持平台(包括 Windows)上运行的已安装的本机应用,而在浏览器类似于常规网站。
安装在 Windows 上时,PWA 与其他应用一样。 例如:
PWA 可以添加到“开始”菜单。
PWA 可以固定到任务栏。
PWA 可以处理文件。
PWA 可以在用户登录时运行。
PWA 可以提交到 Microsoft Store,Windows 用户可以从这里发现并轻松地将其与其他 Windows 应用并行安装。
开始使用 PWA
有关生成 PWA 的详细信息,请访问以下链接:
PWA 概述
将 PWA 发布到 Microsoft Store
使用锁屏提醒、通知和推送消息重新吸引用户
生成 PWA 驱动的小组件
渐进式 Web 应用演示
PWABuilder - 帮助开发人员生成和发布 PWA
React Native
是一个开发平台,可用于构建跨平台应用。
适用于 Windows 的 React Native 引入了对 Windows 10 和 Windows 11 SDK 的 React Native 支持,使你能够使用 JavaScript 为 Windows 10 和 Windows 11 支持的所有设备生成本机 Windows 应用。 这包括电脑、平板电脑、二合一设备、Xbox、混合现实设备等。
通过使用 React Native for Windows,可以使用 JavaScript 或 TypeScript 编写大部分或全部应用代码,该框架会生成本机 UWP XAML 应用程序。 如果你的应用需要调用平台 API,通常可以通过众多
社区模块
中的某个来实现此目的,或者,如果尚不存在这样一个模块,也可以轻松
编写一个本机模块来公开它
。
以下是选择 React Native for Windows 的一些理由:
需要尽可能地跨平台共享代码,或具有要与之共享代码的 Web 属性。
通过快速刷新提升了开发人员工作效率和优化了内部循环。
应用的基础特性(性能、可访问性、国际化)与本机 UWP 应用一样好。
你有 JavaScript 或 TypeScript 的相关经验并偏好使用其中之一
希望在
npmjs.com
上利用仅限 JavaScript 的库,同时也会使用许多本机库。
你的应用将使用本机控件、可视化外观、动画效果和多种颜色,看上去就像是集成到 Windows 中使用的设计语言中一样。 此外,React Native for Windows 应用可调用的 API 集不会受到影响,因为使用该框架既能调用平台 API 也能编写自己的视图管理器和本机模块。
社区发展势头强劲,并已形成许多
社区模块
。
React Native for Windows 入门
有关 React Native for Windows 的详细信息,请访问以下链接:
GitHub 上的 React Native for Windows 存储库
React Native for Windows 中的本机模块
API 参考
Community 模块目录
应用开发框架功能比较
有多种选项可用于开发适用于 Windows 的应用程序。 最适合的选择取决于您的应用程序要求、现有代码以及您对技术的熟悉程度。 下表列出了 Windows 上最常用的应用开发框架以及每个框架支持的功能。
.NET MAUI
Blazor 混合
React Native (RNW)
UWP XAML (Windows.UI.Xaml)
Win32(MFC 或 ATL)
Windows 窗体
WinUI 3