什么是通用 Windows 平台 (UWP) 应用?
UWP 是创建适用于 Windows 的客户端应用程序的众多方法之一。
注意
如果你开始开发 Windows 应用,我们建议你考虑使用 Windows 应用 SDK 和 WinUI 而不是 UWP。 尽管仍受支持,但 UWP 未处于积极开发状态。 有关详细信息,请参阅开始开发 Windows 应用。
要下载开始创建 Windows 应用所需的工具,请参阅安装适用于 Windows 应用 SDK 的工具,然后编写第一个应用。
UWP 在 Microsoft 的开发故事中处于什么位置?
可通过 UWP 创建在 Windows 10 和 Windows 11 设备上运行的应用,并且你可将它与其他平台结合使用。 UWP 应用可以使用 Win32 API 和 .NET 类(请参阅适用于 UWP 应用的 API 集、适用于 UWP 应用的 DLL以及 适用于 UWP 应用的 .NET)。
UWP 应用的功能
UWP 应用的特点:
- 安全:UWP 应用声明其访问哪些设备资源和数据 用户必须对该访问授权。
- 能够在运行 Windows 的所有设备上使用常见的 API。
- 可以使用设备的特定功能并让 UI 适应不同的设备屏幕尺寸、分辨率和 DPI。
- 可通过所有 Windows 10 或 Windows 11 设备(或仅指定的设备)上的 Microsoft Store 获取。 Microsoft Store 提供多种可帮助你的应用赚钱的方法。
- 能够在不对计算机构成风险或引起“计算机腐烂”的情况下安装和卸载。
- 互动:使用动态磁贴、推送通知以及与 Windows 时间线和 Cortana 的“Pick Up Where I Left Off”交互的用户活动吸引用户。
- 可使用 C#、C++、Visual Basic 和 JavaScript 编程。 对于 UI,请使用 WinUI、XAML、HTML 或 DirectX。
让我们来看一下更详细的介绍。
安全
UWP 应用在其清单中声明所需的设备能力,如访问麦克风、位置、网络摄像头、USB 设备、文件等。 用户必须在应用被授予能力前确认并授权该访问。
跨所有设备的通用 API 设计面
Windows 10 引入了通用 Windows 平台 (UWP),这在运行 Windows 的每台设备上提供了通用的应用平台。 UWP 核心 API 在所有 Windows 设备上是相同的。 如果你的应用只使用核心 API,它将在任何 Windows 设备上运行,不论你是定位台式电脑、Xbox、混合现实头戴显示设备还是其他设备。
使用 C++/WinRT 编写的 UWP 应用可以访问属于 UWP 的 Win32 API。 所有 Windows 设备都实现这些 Win32 API。
扩展 SDK 公开特定设备类型的特殊能力
如果以通用 API 为目标,则你的应用可以在运行 Windows 10 或更高版本的所有设备上运行。 但如果希望 UWP 应用利用设备特定的 API,也同样可以这样做。
扩展 SDK 让你可以为不同设备调用专用的 API。 例如,如果你的 UWP 应用面向 IoT 设备,则可以在项目中添加 IoT 扩展 SDK 以利用特定于 IoT 设备的功能。 有关添加扩展 SDK 的详细信息,请参阅使用扩展 SDK 编程的“扩展 SDK”部分。
你可以编写应用,以让它仅在特定类型的设备上运行,然后限制从 Microsoft Store 将它分发到该设备类型。 或者,你可以有条件地测试 API 在运行时的状态,并相应调整应用的行为。 有关详细信息,请参阅使用扩展 SDK 编程的“编写代码”部分。
自适应控件和输入
UI 元素通过调整其布局和比例响应应用所运行屏幕的尺寸和 DPI。 UWP 应用与多种输入类型(如键盘、鼠标、触控、触笔和游戏控制器)配合良好。 如果你需要进一步为特定屏幕大小或设备定制 UI,新的布局面板和工具将帮助你设计可以适应运行应用的不同设备和外形规格的 UI。
Windows 通过以下功能帮助你的 UI 面向多个设备:
- 通用控件和布局面板可帮助你针对设备的屏幕分辨率优化 UI。 例如,按钮和滑块等控件将自动适应设备屏幕的尺寸和 DPI 密度。 布局面板根据屏幕尺寸帮助调整内容的布局。 自适应缩放根据不同设备的分辨率和 DPI 自动进行调整。
- 通过常用的输入处理功能,可通过触控、触笔、鼠标、键盘或游戏控制器接收输入。
- 工具可以帮助你设计出能够适应不同屏幕分辨率的 UI。
你的应用 UI 的某些方面将自动适应不同的设备。 但是,你的应用的用户体验设计可能需要根据正在运行该应用的设备进行调整。 例如,照片应用在手持式小型设备上运行时可以调整其 UI,以确保该用法是单手使用的理想之选。 当照片应用在台式机上运行时,UI 应进行调整以充分利用额外的屏幕空间。
有一个适用于所有设备的应用商店
统一的 App Store 让你的应用在 Windows 设备(如电脑、平板电脑、Xbox、HoloLens、Surface Hub 和物联网 (IoT) 设备)上可用。 可以向 Microsoft Store 提交应用,并使其对所有类型的设备或仅对所选设备类型可用。 你将在一个位置上提交和管理适用于 Windows 设备的所有应用。 想要使用 UWP 功能实现 C++ 桌面应用的现代化并将其在 Microsoft store 内出售? 这同样可以实现。
UWP 应用与 Application Insights 集成以获得详细的遥测和分析 - 用于了解用户、改进应用的重要工具。
UWP 应用可以使用 MSIX 进行打包,并通过 Microsoft Store 或其他方式进行分发。 无论采取哪种方式分发应用,MSIX 都允许对应用进行更新,请参阅从代码更新非应用商店发布的应用包。
获取应用收益
可以选择如何获取应用收益。 可以通过多种方法利用你的应用盈利。 只需选择最适合自身的方式即可,例如:
- 付费下载是最简单的选项。 只需指定价格即可。
- 试用允许用户在购买前先试用你的应用,与更传统的“免费模式”选项相比,用户更易于发现你的应用并转而使用该应用。
- 激励用户的促销价格。
- 应用内购买。
向用户提供相关且实时的信息以吸引他们再次访问
保持用户积极使用你的 UWP 应用有多种方法:
- 动态磁贴和锁屏界面磁贴可以从应用中显示上下文相关且实时的信息概览。
- 推送通知可提供实时提醒来引起用户的注意。
- 用户活动允许用户在应用中上次中断的位置继续,甚至可以跨设备实现。
- “操作中心”管理来自应用的通知。
- 后台执行和触发器使你的应用仅在用户需要时才会运行。
- 你的应用可以使用语音和蓝牙 LE 设备来帮助用户与周围的世界进行交互。
- 集成 Cortana 以将语音命令功能添加到你的应用。
使用一种你已知道的语言
UWP 应用可以使用 Windows 运行时,它是操作系统提供的本机 API。 此 API 通过 C++ 实现,并且在 C#、Visual Basic、C++ 和 JavaScript 中均受支持。 适用于编写 UWP 应用的部分选项包括:
- XAML UI 和 C#、VB 或 C++
- DirectX UI 和 C++
- JavaScript 和 HTML
- WinUI
帮助你入门的链接
准备工作
设计应用
Microsoft 的设计系统名为 Fluent。 Fluent Design 系统是一套结合了最佳实践的 UWP 功能,用于创建在所有类型的支持 Windows 的设备上都表现出色的应用。 Fluent 体验能够适应各类设备,并提供自然的使用感受,从平板电脑到笔记本电脑,从电脑到电视,再到虚拟现实设备。 有关 Fluent Design 的简介,请参阅 UWP 应用的 Fluent Design 系统。
除了确定应用外观和运行方式外,良好的设计还是确定用户如何与你的应用交互的过程。 用户体验极大地影响着用户对你的应用的满意度,所以请勿忽略此步骤。 设计基础知识介绍了如何设计通用 Windows 应用。 请参阅设备入门,以帮助你全面考虑在你要针对的所有不同外形规格上使用应用的交互体验。
除了在不同设备上的交互外,还需规划应用以利用在多个设备之间运行的优势。 例如:
使用适用于 UWP 应用的导航设计基础知识设计你的工作流,以适应移动设备、小屏幕和大屏幕设备。 设置你的用户界面布局来响应不同的屏幕大小和分辨率。
请考虑如何容纳多种输入类型。 请参阅交互指南,了解用户如何使用语音、触摸交互、触摸键盘等与你的应用交互。 或请参阅文本和文本输入指南,以获取更多的传统交互体验。
添加服务
- 使用 Azure 云服务跨设备同步。
- 了解如何连接到 Web 服务以支持应用体验。
- 将推送通知和应用内购买包含在规划中。 这些功能应该能够跨设备运行。
向 Store 提交应用
使用合作伙伴中心可以在同一位置针对 Windows 设备管理和提交所有应用。 请参阅发布 Windows 应用和游戏,了解如何提交应用以在 Microsoft Store 中发布。
新功能简化了流程,同时给予您更多的控制。 你还会找到与付款详细信息组合的详细分析报告、推广你的应用并与客户互动的方式,等等。
有关更多入门材料,请参阅生成适用于 Windows 10 设备的 Windows 应用简介
更多高级主题
- 了解如何使用用户活动,让应用中的用户活动显示在 Windows 时间线和 Cortana 的“Pick Up Where I Left Off”功能中。
- 了解如何使用适用于 UWP 应用的磁贴、锁屏提醒和通知。
- 有关适用于 UWP 应用的 Win32 API 的完整列表,请参阅 UWP 应用的 API 集和 UWP 应用的 Dll。
- 请参阅 .NET 中的通用 Windows 应用查看编写 .NET UWP 应用的概述。
- 有关可以在 UWP 应用中使用的 .NET 类型的列表,请参阅适用于 UWP 应用的 .NET
- 使用 .NET Native 编译应用
- 了解如何将适合 Windows 用户的现代体验添加到现有的桌面应用,并通过桌面桥在 Microsoft Store 中分发。
通用 Windows 平台与 Windows 运行时 API 之间的关系
如果你正在生成一个通用 Windows 平台 (UWP) 应用,将“通用 Windows 平台 (UWP)”和“Windows 运行时 (WinRT)”视为一定意义上同义可以获得诸多的好处和便利。 但是,我们不妨揭秘这两种技术的背景,确定这些概念之间存在什么差别 。 如果你对这些概念感到好奇,本部分提供了终极解答。
Windows 运行时和 WinRT API 是 Windows API 是的演进。 Windows 最初是通过扁平的 C 式 Win32 API 编写的。 后来又加入了 COM API(DirectX 就是一个突出的例子)。 Windows 窗体、WPF、.NET 和托管语言引入自身的 Windows 应用编写方式,并形成了自身的 API 技术风格。 Windows 运行时在幕后在 COM 的下一阶段。 在实际的应用程序二进制接口 (ABI) 层,Windows 运行时在 COM 中的根基是可见的。 但是,Windows 运行时在设计上可以从众多不同的编程语言调用。 并且可让其中的每种语言非常自然地调用。 为此,可以通过所谓的语言投影来访问 Windows 运行时。 Windows 运行时可以投影到 C#、Visual Basic、标准 C++、JavaScript 等语言。 此外,经过适当的打包后(请参阅桌面桥),可以从众多应用程序模型中的一个模型生成的应用调用 WinRT API:Win32、.NET、WinForms 和 WPF。
当然,也可以从 UWP 应用调用 WinRT API。 UWP 是构建在 Windows 运行时基础之上的应用程序模型。 从技术上讲,UWP 应用程序模型基于 CoreApplication,不过,根据所选的编程语言,你可能看不到这种细节。 如本主题所述,从价值主张的角度看,UWP 致力于帮助编写单个二进制应用,如果需要,你可以将此应用发布到 Microsoft Store,并在众多不同外形规格的设备上运行。 UWP 应用的适用设备范围取决于限制应用调用的或者按条件调用的 Windows 运行时 API 子集。
希望本部分合理描述了 Windows 运行时 API 底层技术之间的差异,以及通用 Windows 平台的机制和商业价值。