[PConline 雜談]微軟已經(jīng)在10月5日面向普通用戶推送了Windows 11正式版,想必很多朋友已經(jīng)用上了這最新一代的操作系統(tǒng)。而如果你是一名微軟粉絲,有長(zhǎng)期關(guān)注微軟生態(tài),那么可能會(huì)注意到Win10時(shí)代被頻頻提起的UWP生態(tài),在新系統(tǒng)的到來之際竟然近乎銷聲匿跡。 實(shí)際上,這并不是錯(cuò)覺。UWP這個(gè)在Win10時(shí)代,曾經(jīng)扛起微軟生態(tài)的大旗,在Win11時(shí)代已然倒了下去。 微軟已經(jīng)公告,UWP被實(shí)質(zhì)性放棄
不久前,微軟在Windows應(yīng)用程序的開發(fā)文檔中透露,主推Windows App SDK和WinUI 3開發(fā),UWP不再作為開發(fā)基礎(chǔ)。UWP此后只會(huì)收到“錯(cuò)誤、可靠性和安全修復(fù)”,不會(huì)再引入新功能。因此,UWP事實(shí)上已被微軟棄用,這個(gè)曾經(jīng)被寄予厚望的微軟新生態(tài)的引擎,已經(jīng)成為了時(shí)代的棄子。 在Win8乃至Win10時(shí)代,人們?cè)嵅∮赪indows系統(tǒng)中殘留的老舊痕跡,老軟件乃至系統(tǒng)本身的風(fēng)格和新設(shè)計(jì)格格不入,人們一度將Windows生態(tài)翻新的厚望寄予在UWP身上。然而事情的發(fā)展卻出乎人們的意料,UWP被放棄的同時(shí),Win11卻成為了近年來改版力度最大的Windows桌面系統(tǒng),很多系統(tǒng)組件例如文件資源管理器都紛紛用上了新設(shè)計(jì)。 Win11中界面割裂的現(xiàn)象明顯好轉(zhuǎn),例如文件管理器,沒有UWP化,但界面也現(xiàn)代化了,這是為何?
除了Win11系統(tǒng)本身,大量微軟App也在Win11時(shí)代全面擁抱了Fluent Design等新設(shè)計(jì)。這似乎是Windows生態(tài)華麗轉(zhuǎn)身的一個(gè)好兆頭。但歸根到底,這仍是微軟自發(fā)的行為,除了系統(tǒng)自帶組件和第一方應(yīng)用,更重要的是第三方軟件。在今后第三方的Win軟件還會(huì)源源不斷迎來翻新嗎?還是說Win11的改版仍只會(huì)是曇花一現(xiàn)、大量Win軟件仍舊積重難返?今天就來簡(jiǎn)單談?wù)劙伞?/p> 為何微軟要放棄UWP? 在展開話題之前,我們先來回顧一下微軟為何要放棄UWP。實(shí)際上,UWP生態(tài)萎靡,已非一朝一夕之事。早在Win11尚未公布之前,Win10上的UWP生態(tài)就已經(jīng)半死不活,大量知名UWP應(yīng)用早在去年前年就已經(jīng)停止更新,大廠的UWP產(chǎn)品更是被Win32轉(zhuǎn)制版軟件取而代之,例如QQ、微信、網(wǎng)易云音樂都是其中典型。 開發(fā)者不青睞UWP,是有其合理原因的。 首先,微軟在移動(dòng)平臺(tái)上的折戟沉沙,令UWP應(yīng)用價(jià)值大減。UWP開發(fā)規(guī)范主打跨平臺(tái),從其名字“Universal Windows Platform”中就可窺一斑。UWP應(yīng)用可以同時(shí)適配移動(dòng)和桌面平臺(tái),但隨著WP/Win10M宣告失敗,UWP這座橋梁的意義就很值得懷疑了。 移動(dòng)平臺(tái)上的潰敗,令UWP應(yīng)用和Win商店失去了一大根基
其次,UWP應(yīng)用存在諸多限制,能實(shí)現(xiàn)的功能相當(dāng)有限。UWP應(yīng)用的API并不如傳統(tǒng)的Win32軟件來得豐富,收到諸多限制,例如UWP應(yīng)用必須在App Container中以沙盒的形式運(yùn)行,難以獲取很多常見的系統(tǒng)權(quán)限,不少功能受到限制,例如UWP應(yīng)用如何使用系統(tǒng)代理就是個(gè)難題。和傳統(tǒng)軟件相比,UWP應(yīng)用功能沒有那么自由,能調(diào)用的資源更少,受到更嚴(yán)格的后臺(tái)限制,而且某些應(yīng)用還很容易閃退。這帶來了很不好的用戶體驗(yàn)。 UWP應(yīng)用受限較多
再者,UWP應(yīng)用兼容性不理想,盡管支持跨平臺(tái),卻無法兼容老平臺(tái)。Windows一大優(yōu)點(diǎn)在于兼容性,無論使用新老開發(fā)工具,所編寫的程序都能在最新的Win10中跑起來,這令很多開發(fā)者至今仍使用舊版本的開發(fā)工具,以同時(shí)兼容Win7、Win10等多個(gè)版本的系統(tǒng),大家并沒有太多動(dòng)力為了UWP就把開發(fā)工具時(shí)時(shí)保持在最新。 最后,UWP應(yīng)用還存在開發(fā)框架一直迭代不穩(wěn)定、App必須在應(yīng)用商店中發(fā)布等問題,這都影響了開發(fā)者的開發(fā)意愿。 只能安裝商店應(yīng)用的Windows 10S并不受歡迎
種種原因綜合之下,UWP的發(fā)展長(zhǎng)期處于低潮。而其中的很多問題,又是微軟無法解決的。例如UWP的定位在于跨設(shè)備跨平臺(tái),要兼顧桌面和移動(dòng)環(huán)境,這就意味著自由度高的桌面開發(fā)環(huán)境必須向存在種種限制的移動(dòng)開發(fā)環(huán)境妥協(xié),導(dǎo)致的結(jié)果就是UWP應(yīng)用功能受限、向后兼容性受限。結(jié)合當(dāng)前微軟在移動(dòng)市場(chǎng)的表現(xiàn),UWP的確沒有太大存在的意義了。 Win11時(shí)代Win32也能迎來翻新? UWP不再被視為Windows開發(fā)的重心,但Windows 11中,大量軟件應(yīng)用反而煥然一新,這又作何解釋呢?事實(shí)上,UWP盡管沒有取得什么大成功,但它的很多遺產(chǎn),卻被繼承了下來,這讓W(xué)indows在此后的生態(tài)建設(shè)中,更加順風(fēng)順?biāo)?/p> 就如文章一開頭所提到的,微軟將會(huì)把Windows開發(fā)的重心轉(zhuǎn)向Windows App SDK和WinUI 3,但這兩者又是什么來頭呢?其實(shí)它們的構(gòu)成,和UWP是脫不開關(guān)系的。 在Win10時(shí)代,微軟推行UWP,而UWP所用的控件和樣式庫(kù)則被稱為WinUI 2。WinUI 2和Windows 10 SDK集成,為UWP提供Windows UI控件以及其他UI元素。然而,WinUI 2卻有僅僅適用于UWP開發(fā),對(duì)于傳統(tǒng)的Win32軟件,它無能為力,無法為傳統(tǒng)的Win32軟件提供界面、樣式更新。 Win10時(shí)代,UWP應(yīng)用使用WinUI 2構(gòu)建界面,而WinUI 2也僅僅支持UWP
如此一來,如果軟件不轉(zhuǎn)向UWP開發(fā),那么即使更新版本,那么往往也只會(huì)使用WPF、MFC等比較老舊的開發(fā)工具。軟件不使用UWP開發(fā),就無法用上WinUI 2,就沒法跟上Windows系統(tǒng)的界面更新,這讓W(xué)in10時(shí)代視覺效果極其割裂。這個(gè)情況,在Win11時(shí)代似乎要得以改觀了。 在開發(fā)Windows 11的同時(shí),微軟也盤算起了整理軟件開發(fā)生態(tài)的路子。在去年的Build 2020開發(fā)者大會(huì)上,微軟公布了“Project Reunion”,這是一套整合UWP和Win32開發(fā)的方案。微軟試圖通過Project Reunion,將Win32和UWP API與Windows 10脫鉤,并將UWP中出廠的API提供給Win32使用,以 “彌合”兩個(gè)平臺(tái)之間的差距。現(xiàn)在,Project Reunion已經(jīng)取得了初步的成果,那就是新的Windows App SDK以及WinUI 3。 作為Project Reunion的一部分,WinUI 3同時(shí)支持Win32和UWP,傳統(tǒng)軟件也可以使用它更新界面
全新的Windows App SDK融合了傳統(tǒng)Win32以及UWP應(yīng)用關(guān)鍵技術(shù),并使用 WinUI 3作為UI框架。此后,開發(fā)者為Windows開發(fā)軟件,無論是開發(fā)Win32還是UWP,只要使用Windows App SDK,即可讓軟件用上新的界面——沒有使用UWP重構(gòu)的文件資源管理器得以翻新,就受益于此。 需要注意的是,Windows App SDK并不會(huì)取代掉之前的Windows SDK 或現(xiàn)有桌面Windows應(yīng)用類型,例如 .NET(包括Windows窗體和WPF)和桌面 Win32等,而是使用一組通用API來補(bǔ)充這些現(xiàn)有工具和應(yīng)用類型,開發(fā)人員可以在這些平臺(tái)上依賴這些API來執(zhí)行操作。 換言之,Windows App SDK通過拓展更多的API接口,讓W(xué)in32開發(fā)也如UWP一樣標(biāo)準(zhǔn)化,讓開發(fā)者可以輕松調(diào)用WinUI 3來構(gòu)建新的軟件界面。為Win32軟件開發(fā)新版,不需要將Win32軟件重構(gòu)為UWP,傳統(tǒng)軟件也能用上新界面了。 未來Windows軟件會(huì)如何發(fā)展? 那么問題來了,Win10時(shí)代開發(fā)者并不愿意使用UWP,在Win11時(shí)代大家就會(huì)擁抱Windows App SDK和WinUI 3嗎?恐怕其中仍有一些疑慮。 首先需要肯定的是,Windows App SDK的確解決了UWP力所不逮的一些問題。例如UWP應(yīng)用功能受限,而Windows App SDK可以用于Win32開發(fā),就減少了很多限制。Windows App SDK打破了軟件開發(fā)在功能和API調(diào)用等方面的瓶頸,讓W(xué)in32軟件銜接最新Windows界面不再有功能方面的顧慮。 但與此同時(shí),Windows App SDK并沒有解決UWP開發(fā)的很多問題。 ·兼容性。UWP向后兼容到Win10 1703,而Windows App SDK的兼容性更差,只兼容到Win10 1809。如果開發(fā)商打算讓軟件繼續(xù)兼容Win7、Win8,那么必然不會(huì)選擇Windows App SDK。 各類Windows開發(fā)框架對(duì)比,可見WinUI 3對(duì)老系統(tǒng)的支持是更差的
·遷移成本。將老軟件遷移到Windows App SDK,并不比將其重構(gòu)為UWP簡(jiǎn)單,很多歷史悠久的大型軟件,已經(jīng)累積起了穩(wěn)定生態(tài)和客源,并不一定愿意做這方面的工作。 ·成熟度。事實(shí)上,Windows App SDK才剛剛發(fā)布1.0穩(wěn)定版,很多開發(fā)框架尚未穩(wěn)定,也遠(yuǎn)稱不上成熟。根據(jù)微軟的規(guī)劃,Windows App SDK在未來還會(huì)通過XAML Islands支持WPF、WinForms和其他帶有WinUI3的應(yīng)用程序,但這些規(guī)劃是否能落實(shí)?微軟砍刀部會(huì)不會(huì)再次大發(fā)神威?恐怕很多人會(huì)選擇觀望。 當(dāng)然,如果開發(fā)者迫切想要軟件跟上Win11的節(jié)奏,或者想要讓產(chǎn)品在Windows商店中上架,Windows App SDK還是頗具吸引力的。Windows App SDK提供了更多適配Win11新系統(tǒng)特性的接口,例如電源管理、應(yīng)用窗口管理、進(jìn)程周期管理等等,使用它來開發(fā)軟件,在Win11上的運(yùn)行效果肯定會(huì)比傳統(tǒng)開發(fā)來得更好。 Windows App SDK可以讓W(xué)in32軟件更容易支持更多系統(tǒng)新特性
簡(jiǎn)而言之,Windows App SDK有其價(jià)值所在,它為Win32軟件提供了適配新系統(tǒng)的開發(fā)方案,并整合了UWP。但與此同時(shí),它并不成熟,也存在兼容性等問題。開發(fā)者是否會(huì)跟進(jìn)Windows App SDK和WinUI 3?恐怕還是得視實(shí)際情況而定了。 總結(jié) Windows軟件是否可以翻新?微軟的確已經(jīng)給出了Windows App SDK和WinUI 3的方案。然而,Windows系統(tǒng)的一大核心競(jìng)爭(zhēng)力,在于強(qiáng)大的兼容,這既體現(xiàn)在新系統(tǒng)對(duì)老軟件的兼容,也體現(xiàn)在新軟件對(duì)老系統(tǒng)的兼容。而無論是UWP還是Windows App SDK,都在試圖打破這一局面,因此新開發(fā)規(guī)范的推廣,也一定會(huì)遭遇障礙。 Windows并非是一個(gè)封閉的系統(tǒng),微軟很難讓大家都跟隨自己的腳步,擁抱應(yīng)用商店和新的開發(fā)套件。這意味著,微軟必須在這些方面提供足夠多的吸引力,才有可能讓W(xué)indows的生態(tài)脫胎換骨。微軟能在Win11時(shí)代做到這一切嗎?我們拭目以待吧。
|