微軟已經在10月5日面向普通使用者推送了Windows 11正式版,想必很多朋友已經用上了這最新一代的作業系統。而如果你是一名微軟粉絲,有長期關注微軟生態,那麼可能會注意到Win10時代被頻頻提起的UWP生態,在新系統的到來之際竟然近乎銷聲匿跡。
實際上,這並不是錯覺。UWP這個在Win10時代,曾經扛起微軟生態的大旗,在Win11時代已然倒了下去。
不久前,微軟在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必須在應用商店中釋出等問題,這都影響了開發者的開發意願。
種種原因綜合之下,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時代做到這一切嗎?我們拭目以待吧。