微软前CTO深度剖析:Windows GUI混乱史,14年14次转向,17种GUI并存
2026-03-26 09:14:54未知 作者:徽声在线
徽声在线3月25日消息,曾在微软担任CTO长达23年的Jeffrey Snover近日发表了一篇详尽的博文,深入剖析了微软在过去几十年中,在图形用户界面(GUI)设计上的多次摇摆不定,以及这一系列决策如何导致Windows开发生态逐渐走向碎片化。
故事得从1980年代说起,那时Win16和Win32 API为Windows开发者提供了一个统一且稳定的开发环境,开发者只需掌握一套技能,便能应对几乎所有Windows应用的开发需求。
技术作家Charles Petzold所著的《Programming Windows》一书,长达852页,成为了桌面应用开发领域的经典之作,被无数开发者奉为圭臬。
然而,进入1990年代,微软开始尝试用MFC、COM、OLE、ActiveX等新技术来突破Win32的局限。Snover指出,这些组件架构虽然意图创新,但却给Windows开发带来了前所未有的复杂性,使得技术叙事变得支离破碎。
在开发者大会上,微软的技术展示变得混乱不堪,Snover甚至用"keynote clusterf*ck"来形容当时的主题演讲,足见其混乱程度。
时间来到2003年,微软展示了Windows Longhorn的技术愿景,其中Avalon(后更名为WPF)以其基于GPU加速的XAML矢量渲染子系统而备受瞩目。然而,好景不长,2004年8月,微软突然改变方向,要求所有新开发项目必须使用C++。
尽管WPF最终随Windows Vista一同发布,但Windows Shell本身却并未采用它,这一决策在Windows工程团队和.NET团队之间埋下了深深的矛盾种子。
Snover认为,正是这些内部矛盾最终导致了WPF的边缘化、Silverlight的消亡以及UWP(通用Windows平台)的失败。
2007年,在WPF已经证明其实力的情况下,微软再次改变方向,推出了Silverlight。
然而,到了2010年,微软又突然宣布Silverlight不适用于跨平台开发,转而推崇HTML5作为未来方向,Silverlight仅被用于Windows Phone开发。这一突如其来的转变让大量押注Silverlight的开发者措手不及。
时间跳转到2012年,Windows 8的发布引入了基于原生C++的WinRT运行时。然而,Windows团队对.NET的排斥态度导致后者十年的投资瞬间化为乌有。Snover这样描述当时的混乱局面:
"微软内部同时存在着两个截然不同的故事,Windows团队在全力推进WinRT,而.NET团队仍在坚持推广WPF。不同的团队、不同的副总裁、不同的路线图,让开发者无所适从。
在//Build 2012大会上,开发者们听到的是:未来是WinRT的天下,同时HTML+JS也是一等公民,.NET仍然可用,C++也回来了,你应该写Metro应用,同时你的WPF代码仍然运行良好。这哪里是战略,简直就是《饥饿游戏》,六个团队在争夺你的关注。
企业开发者看了一眼UWP的沙箱机制、强制应用商店分发以及缺失的Win32 API,纷纷选择离开。"
Snover指出,在过去的14年间,微软在推荐Windows GUI框架方面竟然转向了14次之多,如今的Windows平台上共存着17种GUI技术,覆盖了5种编程语言:
微软原生框架包括:Win32(1985年诞生)、MFC(1992年推出)、WinForms(2002年面世)、WPF(2006年发布)、WinUI 3(2021年登场)、MAUI(2022年问世)。
微软Web混合方案则有:Blazor Hybrid、WebView2。
第三方方案更是琳琅满目,包括Electron(被VS Code、Slack、Discord等广泛应用,Snover特别指出,这是目前Windows上部署最广泛的桌面GUI技术,而微软却与之无缘)、Flutter(来自Google)、Tauri、Qt、React Native for Windows、Avalonia(被JetBrains、GitHub、Unity等采用,Snover讽刺这些开发者"已经不再等待微软了")、Uno Platform、Delphi、Java Swing/JavaFX。
Snover用自创的词汇"boof-a-rama"来形容当前的混乱局面,他认为微软推出的技术本身往往并不差,真正导致它们失败的不是技术缺陷,而是内部政治斗争、开发者大会上过早宣布转向以及混乱的商业战略。
Petzold的《Programming Windows》一书在2012年第六版(覆盖Windows 8/WinRT)之后便停止了更新,或许这就是对这种不可预测的碎片化现象的最好注脚。
Snover自1989年加入微软以来,历任多个重要职位,包括Partner Architect、Distinguished Engineer(2009年)、Technical Fellow兼首席架构师(2015年)、CTO(2019年),直至2022年离职加入Google,并于2025年正式退休。以他对微软内部运作模式的深入了解,这篇博文的可信度不言而喻。