编写 Windows 应用的简介

已完成

我们要介绍什么?

本模块将介绍如何使用三种不同的 Windows 技术以三种不同的方式编写相同的应用。 你将使用 C#,但要将它与以下三种开发框架相结合:通用 Windows 平台 (UWP)、Windows Presentation Foundation (WPF) 和 Windows 窗体。

然后,我们将介绍 Windows Template Studio (WTS),你将了解如何轻而易举地快速生成新式应用的核心。

三个平台的故事

多年来,不同的技术和要求形成了编写在 Windows 上运行的应用的多种方法。 目标始终不变,就是帮助开发人员创建用户界面,并生成必要的样板代码,同时便于他们添加提高应用实用性的独特功能。 没有人愿意编写代码来逐像素显示文本,或绘制组成菜单或窗口的形状。 开发人员希望编写经过验证的一致可靠代码,以处理所有这些可用功能(和许多更多功能!)

为此,Microsoft 创建了许多工具和库。 本学习路径将介绍的三个工具是 UWP、WPF 和 Windows 窗体。 这三种工具提供相似方法来生成基本应用程序。

Diagram that shows some of the development platforms available in Visual Studio, such as UWP, WPF, and Windows Forms.

通用 Windows 平台

Windows 10 引入了通用 Windows 平台 (UWP),这在运行 Windows 的每台设备上提供了通用的应用平台。 UWP 核心 API 在所有 Windows 设备上都是相同的。 如果应用仅使用核心 API,它将在任意 Windows 10 设备上运行,无论是台式电脑、Xbox、混合现实头戴显示设备,还是其他设备。

若要定目标到 Windows,且无阻碍地访问 Windows API 和功能,UWP 是最佳选择。 UWP 还提供新式应用平台的其他优势。 优势包括:

  • 基于 Extensible Application Markup Language (XAML) 的 UI 模型,内置对适应 DPI 和屏幕大小更改的支持。
  • 一种安全模型,用户可在此模型中显式授予应用对设备功能的访问权限。
  • 一种打包模型,支持全新安装并能够直接发布到 Microsoft Store。

Windows Presentation Foundation

Windows Presentation Foundation (WPF) 是用于创建桌面客户端应用的 UI 框架。 WPF 开发平台支持广泛的应用程序开发功能,包括:

  • 应用程序模型
  • 资源
  • 控制
  • 显卡
  • Layout
  • 数据绑定
  • 文档
  • 安全性

它是 .NET 中特定于 Windows 的库的一部分,因此,如果已使用 ASP.NET Core 或 Windows 窗体通过 .NET 生成过应用,应该会对编程体验有所熟悉。 WPF 使用 XAML,为应用编程提供声明性模型。

如果你希望拥有比 C ++ 和 Win32 更高的编码效率,则 WPF 和 Windows 窗体是最佳选择。 由于新式 .NET 的非 UI 部分现在是跨平台的,因此还可以与其他平台(包括 macOS 和 Linux)共享某些 .NET 代码和库。

Windows 窗体

Windows 窗体是一个用于 .NET 的开源图形用户界面,一组标准的基类库和 API,用于简化常见的应用程序任务。 使用 Visual Studio 等开发环境时,可以创建 Windows 窗体智能客户端应用,以显示信息、请求用户提供输入,以及通过网络与远程计算机通信。 当前的 Windows 窗体平台基于较旧的 .NET Framework UI 平台,缺少 WPF 和 UWP 提供的某些功能。

这三个平台是我们在本培训模块中关注的主题。 不过,在开始之前,让我们快速了解一下其他两个选项:WinUI 和 Win32。

WinUI 和 Windows App SDK

WinUI 3 是本机 UI 平台组件,随附 Windows 应用 SDK(与 Windows SDK 分离)。 Windows 应用 SDK 提供了一组统一的 API 和工具,可用于创建面向 Windows 10 及更高版本且可发布到 Microsoft Store 的生产桌面应用。

注意

目前,有两代 Windows UI 库 (WinUI):适用于 UWP 的 WinUI 2 和 Windows 应用 SDK 中的 WinUI 3。 虽然两者都可以在 Windows 10 及更高版本上的生产就绪应用中使用,但它们各自有不同的开发目标。 请参阅 WinUI 3 与 WinUI 2 的比较

谈到编写 Windows 应用时,不能不提到另外一个选项:Win32.

Win32 (Windows API) 和 C++

借助 Win32 API(更准确地说是 Windows API),应用可以使用 Windows 的功能。 使用此 API,可以开发在所有 Windows 版本上都成功运行的应用,同时仍能利用每个版本独有的特性和功能。 如果需要实现最高水平的性能或效率、访问本机 OS 功能或定目标到 DirectX 技术,Win32 是不错的选择。

通过直接控制内存分配和面向性能的 CPU 功能(如 SSE 或 AVX 指令),这种方法可以为应用实现最佳性能。 这是将 DirectX 技术定目标用于低级别、高性能图形访问的最佳方式。 可以在所有类型的 Windows 应用之间以及与非 Windows 平台共享 C++ 代码。 但代价是,与 C# 和 WPF(举个例子)相比,这需要执行大量工作才能实现基本功能。

注意

有关详细信息,请参阅编写适用于 Windows 的应用:选择开发技术

你编写的应用

要在本模块中创建的应用很简单。 在你选择按钮后,它会显示一些文本,并更改一些颜色。

Animation of the Say hello application running with text that repeatedly changes color.

它虽然很普通,但可用于展示开发平台之间的相似点和不同点。

完成填充后,可继续试用 Windows Template Studio。 使用 WTS,你可生成外观更惊艳一点的应用。

Screenshot that shows a composite of three different pages of a Weather application: a map, chart, and settings page.

准备好开始了吗?