微软已经在10月5日向普通用户推送了Windows11正式版。想必很多朋友都已经用上了这款最新一代的操作系统。而如果你是微软粉,长期关注微软生态,你可能已经注意到,在新系统到来之际,Win10时代被频繁提及的UWP生态几乎消失了。 其实这不是错觉。曾经在Win10时代扛起微软生态大旗的UWP,在Win11时代已经倒下。微软宣布大幅放弃UWP 前不久,微软在Windows应用的开发文档中透露,主要推动WindowsAppSDK和WinUI3的开发,不再以UWP作为开发基础.UWP之后只会收到“错误、可靠性和安全修复”,不会引入任何新功能。所以,UWP其实已经被微软抛弃了。这个曾经万众瞩目的微软新生态引擎,如今却成了时代的弃儿。 在Win8乃至Win10时代,人们对??Windows系统遗留下来的旧痕迹颇有微词。旧软件的风格甚至系统本身都与新设计不兼容。人们曾对UWP上的Windows生态改造寄予厚望。然而,事情的发展却出乎人们的意料。在UWP被放弃的同时,Win11成为了近年来改版最密集的Windows桌面系统。许多系统组件,如文件浏览器,都采用了新的设计。Win11界面碎片现象明显改善。比如文件管理器不是UWP,但是界面也是现代化的。为什么?设计。这似乎是Windows生态华丽转身的一个好兆头。但归根结底,这还是微软的自发行为。除了系统自带的组件和第一方应用,更重要的是第三方软件。未来,第三方Win软件是否会继续迎来翻新?还是Win11的改版仍只是昙花一现,大量Win软件仍难以回归?今天简单说一下。微软为什么放弃UWP? 开始正题之前,我们先来回顾一下微软为什么放弃UWP。事实上,UWP生态不景气,已经不是一朝一夕的事情了。在Win11公布之前,Win10上的UWP生态已经半死不活。一大批知名的UWP应用早在去年就已经停止更新,各大厂商的UWP产品都被QQ、微信、网易云等Win32转换软件所取代。音乐就是其中的典型。 开发者不喜欢UWP,也是有充分理由的。 首先,微软在移动平台上的失败,大大降低了UWP应用的价值。UWP开发规范侧重于跨平台,从它的名字“UniversalWindowsPlatform”就可以看出。UWP应用可以同时适配移动端和桌面端平台,但是随着WP/Win10M的失败,UWP作为桥梁的意义就很值得怀疑了。移动平台的崩盘,让UWP应用和Win商店失去了大根基。其次,UWP应用的限制比较多,能够实现的功能比较有限。UWP应用程序的API并不像传统的Win32软件那样丰富,并且受到很多限制。比如UWP应用必须以沙盒的形式运行在AppContainer中,很多常用的系统权限很难获取。许多功能受到限制,例如UWP应用程序。如何使用系统代理是一个难题。与传统软件相比,UWP应用功能没有那么自由,可以调用的资源少,后台限制更严格,部分应用容易崩溃。这带来了非常糟糕的用户体验。UWP应用受限较多 而且UWP应用的兼容性也不是很理想。虽然支持跨平台,但是不能兼容老平台。Windows的一大优势是兼容性。无论使用新旧开发工具,编写的程序都可以在最新的Win10中运行,这使得很多开发者还在使用老版本的开发工具来兼容Win7、Win10等,系统版本多,大家不'有很大的动力使UWP的开发工具保持最新。 最后,UWP应用还存在开发框架一直迭代不稳定,App必须在应用商店发布等问题,影响了开发者的开发意愿。只能安装商店应用的Windows10S并不流行 由于种种原因,UWP的发展长期处于低潮期。而其中的很多问题,微软都无法解决。比如UWP的定位是跨设备、跨平台,桌面和移动环境都要兼顾。这意味着具有高度自由度的桌面开发环境必须向具有各种限制的移动开发环境妥协。结果是UWP应用程序功能受到限制。后来的兼容性是有限的。结合微软目前在移动市场的表现,UWP并没有太大的意义。Win32能否在Win11时代翻新? UWP不再被视为Windows开发的重点,但在Windows11中,大量的软件应用程序焕然一新。这怎么解释呢?事实上,UWP虽然没有取得什么重大的成功,但是它的很多遗产都被继承了下来,这让Windows后续的生态建设更加顺利。 文章开头提到,微软将把Windows开发的重心转移到WindowsAppSDK和WinUI3上,但是这两者的渊源是什么?其实他们的构成离不开UWP的关系。 在Win10时代,微软推出了UWP,UWP使用的控件和样式库称为WinUI2。WinUI2与Windows10SDK集成,为UWP提供WindowsUI控件和其他UI元素。但是,WinUI2只适用于UWP开发。对传统Win32软件无能为力,不能为传统Win32软件提供界面和风格更新。Win10时代,UWP应用使用WinUI2构建界面,而WinUI2只支持UWP 。这样,如果软件不转向UWP开发,即使版本更新,也往往只会使用WPF、MFC等这些比较老的开发工具。如果软件不使用UWP开发,就无法使用WinUI2,跟不上Windows系统的界面更新,使得Win10时代的视觉效果极为碎片化。这种情况在Win11时代似乎正在发生改变。 在开发Windows11的同时,微软也想出了如何组织软件开发生态系统。在去年的Build2020开发者大会上,微软公布了“ProjectReunion”,这是一个整合了UWP和Win32开发的解决方案。微软正试图通过ProjectReunion将Win32和UWPAPI从Windows10中解耦,将UWP中的工厂API提供给Win32,以“弥合”两个平台之间的鸿沟。现在,ProjectReunion已经初见成效,那就是新的WindowsAppSDK和WinUI3。作为ProjectReunion的一部分,WinUI3同时支持Win32和UWP。传统软件也可以用它来更新界面。此后,开发者开始为Windows开发软件,无论是开发Win32还是UWP,只要使用WindowsAppSDK,就可以让软件使用新的界面——没有使用UWP重构的文件资源管理器可以受益由此。. 需要注意的是,WindowsAppSDK不会取代之前的WindowsSDK或现有的桌面Windows应用类型,例如.NET(包括WindowsForms和WPF)和桌面Win32,而是使用一套通用的这些现有工具和应用程序类型由API补充,开发人员可以依赖这些API在这些平台上执行操作。 也就是说,通过扩展更多的API接口,WindowsAppSDK让Win32开发和UWP一样标准化,让开发者可以轻松调用WinUI3来构建新的软件接口。开发新版Win32软件,无需将Win32软件重构为UWP,传统软件也可以使用新接口。未来Windows软件将如何发展? 那么问题来了,Win10时代的开发者并不愿意使用UWP。Win11时代大家会拥抱WindowsAppSDK和WinUI3吗?恐怕还有一些疑问。 首先需要肯定的是,WindowsAppSDK确实解决了一些UWP做不到的问题。比如UWP应用功能受限,可以使用WindowsAppSDK进行Win32开发,减少了很多限制。WindowsAppSDK在功能和API调用方面打破了软件开发的瓶颈,让Win32软件可以连接到最新的Windows界面,无需担心功能问题。 但同时WindowsAppSDK并没有解决很多UWP开发的问题。 兼容性。UWP向下兼容Win101703,而WindowsAppSDK的兼容性更差,只能兼容Win101809。如果开发者打算让软件继续兼容Win7和Win8,肯定不会选择WindowsApp开发工具包。对比各种Windows开发框架,可以看出WinUI3对老系统的支持更差。 ·迁移成本。将旧软件迁移到WindowsAppSDK并不像重构到UWP那样简单。很多历史悠久的大型软件已经积累了稳定的生态和客户群,不一定愿意做这个工作。 ·成熟。事实上,WindowsAppSDK1.0稳定版刚刚发布,很多开发框架还不稳定,远未成熟。按照微软的计划,未来WindowsAppSDK将通过XAMLIslands支持WPF、WinForms等带有WinUI3的应用,但这些计划能否实现呢?微软的砍刀部门是否会再次发威?恐怕很多人会选择观望。 当然,如果开发者急于让软件跟上Win11的节奏,或者希望自己的产品上架WindowsStore,WindowsAppSDK还是相当有吸引力的。WindowsAppSDK提供了更多适配Win11新系统特性的接口,如电源管理、应用程序窗口管理、进程周期管理等,如果用它来开发软件,在Win11上的运行效果肯定比传统开发。.WindowsAppSDK可以让Win32软件更容易支持更多新的系统特性 总之,WindowsAppSDK有它的价值。为Win32软件提供了适应新系统的开发方案,并集成了UWP。但同时不成熟,存在兼容性问题。开发人员会跟进WindowsAppSDK和WinUI3吗?恐怕还是要看实际情况。总结 Windows软件可以翻新吗?微软确实给出了WindowsAppSDK和WinUI3的解决方案。但是,Windows系统的核心竞争力之一在于其强大的兼容性,这不仅体现在新系统对旧软件的兼容性上,还体现在新软件对旧系统的兼容性上。UWP和WindowsAppSDK都在试图打破这种局面,那么新的开发规范的推广肯定会遇到阻碍。 Windows不是一个封闭的系统,微软很难让大家跟随自己的脚步拥抱应用商店和新的开发工具包。这意味着微软必须在这些领域提供足够的吸引力,才有可能重塑Windows生态系统。Windows11时代微软能做到这一切吗?我们拭目以待。
