📌 开篇思考:为什么还需要桌面应用?

在这个 Web 和移动主导的时代,我们似乎很少再去主动提起“Windows 桌面应用”这个话题。但我相信:桌面程序没有消失,只是变得更专精、更隐身、更基础。比如大型 IDE、科研软件、设备管理器,仍离不开本地 GUI 与系统调用的深度集成。

带着这个问题意识,我开始尝试系统性梳理 Win 应用开发的主流路径与技术生态。


🧭 一、开发路线图概览

微软在其开发者文档中为不同场景提供了推荐路径:

  • 若偏好 C# 与跨平台:.NET MAUI
  • 若聚焦 Win 本地开发:WinAppSDK + WinUI3
  • 若偏向底层控制:Win32 / WinRT / C++

📘 官方推荐文档:Get Started with Windows Apps


🏛️ 二、Windows 系统架构的复杂性与历史包袱

Windows 并非一个“设计优雅”的操作系统,而是一个历史堆叠工程的博物馆。它的 API 层从 Win32、COM、到 UWP、WinRT,再到今天的 WinAppSDK,都夹杂着时代痕迹。

我逐渐意识到,技术选择并非“老旧 vs 新潮”的问题,而是“兼容性 vs 创新性”的权衡。这也是为何微软倾向于提出“一致性 API(Unified SDK)”的原因。


🧰 三、WinAppSDK:微软的现代统一平台

WinAppSDK 是微软提出的新一代开发组件,核心目标是“让旧系统上的开发具备现代特性”,支持从 Win11 向下兼容至 Win10 1809。

  • 提供统一的 API 层(WinRT + WinUI + AppLifecycle)
  • 独立于 UWP,兼容 Win32 程序
  • 不再依赖“系统更新”即可获得 SDK 功能

📄 WinAppSDK 文档
📥 Windows SDK 下载页


🧑‍💻 四、开发要素分析:语言、UI、API 与打包格式

整理如下:

维度选项推荐
语言C# / C++依项目需求而定;C++ 更灵活,C# 更高效
UI 框架WinUI3 / WPF / XAML IslandsWinUI3 更现代、与系统解耦
API 调用Win32 / WinRTWinRT 推荐作为现代接口层
打包方式MSIX / 传统安装包MSIX 提供更安全与部署一致性

🧪 五、实验探索:MSVC 单独安装的可行性

由于课程需求我需要使用 C++,但又不希望安装整个 Visual Studio。于是探索了是否可以只使用 MSVC 工具链

找到两个方法:

这为“轻量级 C++ 桌面开发”提供了可能。


🔁 六、重拾 C++:语言之外的哲学与演化

微软的现代 C++ 教程让我对这门语言有了新的认识:欢迎回到现代 C++

从 C++17 到 C++20,语言语法正在向更简洁、模块化、函数式靠拢。这不再是“写驱动”的那门语言,而是一个与 Rust 并肩而行的系统级新范式


🧠 结语:Windows 桌面开发值得投入吗?

值得——但要有目标。

  • 如果你要做系统工具、科研软件、音视频编辑器等,需要深入调用硬件与底层 API,本地桌面开发仍是不可替代的选择。
  • 如果你希望统一多平台体验,WinAppSDK 或 .NET MAUI 是现实路径。
  • 若你只是想了解历史、追求技术深度,研究 Win32/C++ 依旧是绝佳训练场。

🧭 我的建议是:带着问题进入系统,带着产品思维选择工具。