微软 Win11 出世 UWP 却惨遭“弃用”,Win 软件还会翻新吗
微软已经在 10 月 5 日面向普通用户推送了 Windows 11 正式版,想必很多朋友已经用上了这最新一代的操作系统。而如果你是一名微软粉丝,有长期关注微软生态,那么可能会注意到,Win10 时代被频频提起的 UWP 生态,在新系统的到来之际竟然近乎销声匿迹。
实际上,这并不是错觉。UWP 这个在 Win10 时代,曾经扛起微软生态的大旗,在 Win11 时代已然倒了下去。
▲ 微软已经公告,UWP 被实质性放弃
不久前,微软在 Windows 应用程序的开发文档中透露,主推 Windows App SDK 和 WinUI 3 开发,UWP 不再作为开发基础。UWP 此后只会收到"错误、可靠性和安全修复",不会再引入新功能。因此,UWP 事实上已被微软弃用,这个曾经被寄予厚望的微软新生态的引擎,已经成为了时代的弃子。
在 Win8 乃至 Win10 时代,人们诟病于 Windows 系统中残留的老旧痕迹,老软件乃至系统本身的风格和新设计格格不入,人们一度将 Windows 生态翻新的厚望寄予在 UWP 身上。然而事情的发展却出乎人们的意料,UWP 被放弃的同时,Win11 却成为了近年来改版力度最大的 Windows 桌面系统,很多系统组件例如文件资源管理器都纷纷用上了新设计。
▲ Win11 中界面割裂的现象明显好转,例如文件管理器,没有 UWP 化,但界面也现代化了,这是为何?
除了 Win11 系统本身,大量微软 App 也在 Win11 时代全面拥抱了 Fluent Design 等新设计。这似乎是 Windows 生态华丽转身的一个好兆头。但归根到底,这仍是微软自发的行为,除了系统自带组件和第一方应用,更重要的是第三方软件。在今后第三方的 Win 软件还会源源不断迎来翻新吗?还是说 Win11 的改版仍只会是昙花一现、大量 Win 软件仍旧积重难返?今天就来简单谈谈吧。
为何微软要放弃 UWP?
在展开话题之前,我们先来回顾一下微软为何要放弃 UWP。实际上,UWP 生态萎靡,已非一朝一夕之事。早在 Win11 尚未公布之前,Win10 上的 UWP 生态就已经半死不活,大量知名 UWP 应用早在去年前年就已经停止更新,大厂的 UWP 产品更是被 Win32 转制版软件取而代之,例如 QQ、微信、网易云音乐都是其中典型。
开发者不青睐 UWP,是有其合理原因的。
首先,微软在移动平台上的折戟沉沙,令 UWP 应用价值大减。UWP 开发规范主打跨平台,从其名字"Universal Windows Platform"中就可窥一斑。UWP 应用可以同时适配移动和桌面平台,但随着 WP/Win10M 宣告失败,UWP 这座桥梁的意义就很值得怀疑了。
▲ 移动平台上的溃败,令 UWP 应用和 Win 商店失去了一大根基
其次,UWP 应用存在诸多限制,能实现的功能相当有限。UWP 应用的 API 并不如传统的 Win32 软件来得丰富,收到诸多限制,例如 UWP 应用必须在 App Container 中以沙盒的形式运行,难以获取很多常见的系统权限,不少功能受到限制,例如 UWP 应用如何使用系统代理就是个难题。和传统软件相比,UWP 应用功能没有那么自由,能调用的资源更少,受到更严格的后台限制,而且某些应用还很容易闪退。这带来了很不好的用户体验。
▲ UWP 应用受限较多
再者,UWP 应用兼容性不理想,尽管支持跨平台,却无法兼容老平台。Windows 一大优点在于兼容性,无论使用新老开发工具,所编写的程序都能在最新的 Win10 中跑起来,这令很多开发者至今仍使用旧版本的开发工具,以同时兼容 Win7、Win10 等多个版本的系统,大家并没有太多动力为了 UWP 就把开发工具时时保持在最新。
最后,UWP 应用还存在开发框架一直迭代不稳定、App 必须在应用商店中发布等问题,这都影响了开发者的开发意愿。
▲ 只能安装商店应用的 Windows 10S 并不受欢迎
种种原因综合之下,UWP 的发展长期处于低潮。而其中的很多问题,又是微软无法解决的。例如 UWP 的定位在于跨设备跨平台,要兼顾桌面和移动环境,这就意味着自由度高的桌面开发环境必须向存在种种限制的移动开发环境妥协,导致的结果就是 UWP 应用功能受限、向后兼容性受限。结合当前微软在移动市场的表现,UWP 的确没有太大存在的意义了。
Win11 时代 Win32 也能迎来翻新?
UWP 不再被视为 Windows 开发的重心,但 Windows 11 中,大量软件应用反而焕然一新,这又作何解释呢?事实上,UWP 尽管没有取得什么大成功,但它的很多遗产,却被继承了下来,这让 Windows 在此后的生态建设中,更加顺风顺水。
就如文章一开头所提到的,微软将会把 Windows 开发的重心转向 Windows App SDK 和 WinUI 3,但这两者又是什么来头呢?其实它们的构成,和 UWP 是脱不开关系的。
在 Win10 时代,微软推行 UWP,而 UWP 所用的控件和样式库则被称为 WinUI 2。WinUI 2 和 Windows 10 SDK 集成,为 UWP 提供 Windows UI 控件以及其他 UI 元素。然而,WinUI 2 却有仅仅适用于 UWP 开发,对于传统的 Win32 软件,它无能为力,无法为传统的 Win32 软件提供界面、样式更新。
▲ Win10 时代,UWP 应用使用 WinUI 2 构建界面,而 WinUI 2 也仅仅支持 UWP
如此一来,如果软件不转向 UWP 开发,那么即使更新版本,那么往往也只会使用 WPF、MFC 等比较老旧的开发工具。软件不使用 UWP 开发,就无法用上 WinUI 2,就没法跟上 Windows 系统的界面更新,这让 Win10 时代视觉效果极其割裂。这个情况,在 Win11 时代似乎要得以改观了。
在开发 Windows 11 的同时,微软也盘算起了整理软件开发生态的路子。在去年的 Build 2020 开发者大会上,微软公布了"Project Reunion",这是一套整合 UWP 和 Win32 开发的方案。微软试图通过 Project Reunion,将 Win32 和 UWP API 与 Windows 10 脱钩,并将 UWP 中出厂的 API 提供给 Win32 使用,以"弥合"两个平台之间的差距。现在,Project Reunion 已经取得了初步的成果,那就是新的 Windows App SDK 以及 WinUI 3。
▲ 作为 Project Reunion 的一部分,WinUI 3 同时支持 Win32 和 UWP,传统软件也可以使用它更新界面
全新的 Windows App SDK 融合了传统 Win32 以及 UWP 应用关键技术,并使用 WinUI 3 作为 UI 框架。此后,开发者为 Windows 开发软件,无论是开发 Win32 还是 UWP,只要使用 Windows App SDK,即可让软件用上新的界面 -- 没有使用 UWP 重构的文件资源管理器得以翻新,就受益于此。
需要注意的是,Windows App SDK 并不会取代掉之前的 Windows SDK 或现有桌面 Windows 应用类型,例如 .NET(包括 Windows 窗体和 WPF)和桌面 Win32 等,而是使用一组通用 API 来补充这些现有工具和应用类型,开发人员可以在这些平台上依赖这些 API 来执行操作。
换言之,Windows App SDK 通过拓展更多的 API 接口,让 Win32 开发也如 UWP 一样标准化,让开发者可以轻松调用 WinUI 3 来构建新的软件界面。为 Win32 软件开发新版,不需要将 Win32 软件重构为 UWP,传统软件也能用上新界面了。
未来 Windows 软件会如何发展?
那么问题来了,Win10 时代开发者并不愿意使用 UWP,在 Win11 时代大家就会拥抱 Windows App SDK 和 WinUI 3 吗?恐怕其中仍有一些疑虑。
首先需要肯定的是,Windows App SDK 的确解决了 UWP 力所不逮的一些问题。例如 UWP 应用功能受限,而 Windows App SDK 可以用于 Win32 开发,就减少了很多限制。Windows App SDK 打破了软件开发在功能和 API 调用等方面的瓶颈,让 Win32 软件衔接最新 Windows 界面不再有功能方面的顾虑。
但与此同时,Windows App SDK 并没有解决 UWP 开发的很多问题。
兼容性。UWP 向后兼容到 Win10 1703,而 Windows App SDK 的兼容性更差,只兼容到 Win10 1809。如果开发商打算让软件继续兼容 Win7、Win8,那么必然不会选择 Windows App SDK。
▲ 各类 Windows 开发框架对比,可见 WinUI 3 对老系统的支持是更差的
迁移成本。将老软件迁移到 Windows App SDK,并不比将其重构为 UWP 简单,很多历史悠久的大型软件,已经累积起了稳定生态和客源,并不一定愿意做这方面的工作。
成熟度。事实上,Windows App SDK 才刚刚发布 1.0 稳定版,很多开发框架尚未稳定,也远称不上成熟。根据微软的规划,Windows App SDK 在未来还会通过 XAML Islands 支持 WPF、WinForms 和其他带有 WinUI3 的应用程序,但这些规划是否能落实?微软砍刀部会不会再次大发神威?恐怕很多人会选择观望。
当然,如果开发者迫切想要软件跟上 Win11 的节奏,或者想要让产品在 Windows 商店中上架,Windows App SDK 还是颇具吸引力的。Windows App SDK 提供了更多适配 Win11 新系统特性的接口,例如电源管理、应用窗口管理、进程周期管理等等,使用它来开发软件,在 Win11 上的运行效果肯定会比传统开发来得更好。
▲ Windows App SDK 可以让 Win32 软件更容易支持更多系统新特性
简而言之,Windows App SDK 有其价值所在,它为 Win32 软件提供了适配新系统的开发方案,并整合了 UWP。但与此同时,它并不成熟,也存在兼容性等问题。开发者是否会跟进 Windows App SDK 和 WinUI 3?恐怕还是得视实际情况而定了。
总结
Windows 软件是否可以翻新?微软的确已经给出了 Windows App SDK 和 WinUI 3 的方案。然而,Windows 系统的一大核心竞争力,在于强大的兼容,这既体现在新系统对老软件的兼容,也体现在新软件对老系统的兼容。而无论是 UWP 还是 Windows App SDK,都在试图打破这一局面,因此新开发规范的推广,也一定会遭遇障碍。
Windows 并非是一个封闭的系统,微软很难让大家都跟随自己的脚步,拥抱应用商店和新的开发套件。这意味着,微软必须在这些方面提供足够多的吸引力,才有可能让 Windows 的生态脱胎换骨。微软能在 Win11 时代做到这一切吗?我们拭目以待吧。
2022-05-06 14:24:50