在一次技术选型讨论中,我们试图回答一个简单的问题:
“如果现在从零做一个 Windows 桌面应用,选什么框架?”
没人能干脆回答。
WPF 成熟,但不再演进;
WinUI 3 面向未来,但还不稳定;
Electron 高效,却不够“安心”;
而 MFC,看似过时,却依然稳稳运行在大量工业软件里。
每个选择都合理,但没有一个让人毫不犹豫。这个结果本身,比任何答案都更说明问题。
一、一个平台是否成熟,看它有没有“默认路径”
对于开发者来说,有一个非常实际的判断标准:
如果一个平台无法在很短时间内给出“推荐做法”,那么它在工程层面就是不成熟的。
Windows 在 GUI 开发上,正处于这样一种状态。
但它并不是一开始就这样。
二、1988:Windows 曾经有一个统一模型
1988 年,Charles Petzold 出版《Programming Windows》。
这本书的意义不在于厚度(800+ 页),而在于它定义了一个完整且自洽的开发范式: 核心抽象非常明确: 这个模型有明显缺点(冗长、易出错),但它具备一个更重要的特性: 一致性(coherence) 开发者只需要理解一套机制,就可以构建完整应用。 可以把它类比为物理学中的基本定律: 学习成本高,但一旦掌握,适用范围清晰且稳定。 随着 Win32 的普及,其局限性开始显现。微软的应对方式是不断叠加抽象层。 问题在于: 它并没有替代 Win32,而是叠加在其之上。 开发者仍然需要理解底层机制,同时还要处理 MFC 的类体系。 这些技术并非 GUI 框架,而是组件模型,但它们深度影响了 UI 开发: 它们带来的问题主要是: 更重要的是: 这些技术没有形成统一的开发叙事。 微软开始从“提供解决方案”转向“提供技术能力”。 在 PDC 2003 上,微软发布 Longhorn 架构: 三大组成: 其中 Avalon(WPF)具有几个关键创新: 从架构角度看,这是一次完整重构: 从“过程式 UI” → “声明式 UI + 渲染引擎” 2004 年,Longhorn 项目被全面重置: 同时出现一个重要内部决策: Windows 核心组件不再依赖 .NET 托管代码 这直接导致: 从这一时期开始,微软内部形成两条路线: 这不仅是技术选择,更是组织分工的体现。 后果是: Silverlight 的定位是: 在 2010 年前,它被广泛认为是富客户端的未来。 在一次公开问答中,微软明确表示: HTML5 是未来方向,Silverlight 不再作为跨平台战略。 问题不在于技术选择,而在于信息传递方式: 技术生命周期由战略调整决定,而非技术成熟度。 Windows 8 引入: 其特点: 开发者面对的信息是: 没有主线,只有选项。 UWP 的目标是:统一所有 Windows 设备。 覆盖 PC、手机、Xbox、HoloLens 等平台 生态未形成闭环 为修复 UWP 的局限,微软推出了: 目标很清晰: 把 UI 框架从操作系统中剥离出来 开发者得到的建议通常只有一句: “取决于你的需求。” 今天 Windows 上实际可用的 GUI 技术包括: Electron 成为事实上的主流桌面 UI 技术之一 而它: 回顾历史,大多数失败并非技术本身,而源于三类深层因素: 成功的平台,不只是技术,更要覆盖整个生命周期: 如果这些问题没有答案,那么: 平台提供的只是技术,而不是可行路径。 Windows 曾经提供过一个明确答案:Win32 + 消息循环模型。 开发者面对的是一个确定的世界: 路径清晰,成本可预期。 今天,它提供的是一组技术选项: 从工程角度看,这意味着:平台从“确定性”走向了“选择性”。 而在高成本领域,这种变化并不总是进步。 选择的增加,往往伴随着: 因此,开发者真正需要的,从来不是“更多可能性”,而是:一条可预期、可持续的成功路径。 有趣的是,今天最成功的桌面 UI 技术之一(Electron),反而呈现出一种“路径收敛”的特征: 它未必是最优的技术解,但它提供了一个关键特性:一致性。 而这,正是 Windows 在过去三十年中逐渐失去的东西。三、1992–2000:面向对象与组件化的复杂化
1. MFC(1992)
2. COM / OLE / ActiveX
四、2003:Avalon / WPF——最接近统一答案的一次
但随后发生了关键转折
五、组织结构的影响:Windows vs .NET
六、2007–2010:Silverlight 与战略转向
转折点:MIX 2010
一个模式开始形成
七、2012:Windows 8 与 WinRT 的分裂
同时存在两套叙事
结果
八、2015:UWP 的理想与现实
现实问题
结果
九、2019 之后:WinUI / Windows App SDK
但问题仍然存在
十、当前生态:多技术并存
微软官方
Web 混合
第三方
一个值得注意的现象
十一、问题归因
1. 组织分裂
2. 发布驱动决策
3. 战略转向
十二、关键结论:缺少“完整策略”
结语
引用链接
[1] https://www.jsnover.com/blog/2026/03/13/microsoft-hasnt-had-a-coherent-gui-strategy-since-petzold/