newsence

Windows 原生應用程式開發簡直是一團糟

Hacker News·14 天前

我身為一名長期的 Windows 開發者,分享了在開發一個簡單工具程式時遭遇的挫折,並指出 UI 框架歷史破碎以及即便使用最新技術仍需依賴舊版 API 解決方案的現狀。

背景

本文作者透過開發一款名為 Display Blackout 的螢幕控制工具,探討了當前 Windows 原生開發環境的混亂現狀。作者回顧了從 Win32、MFC、WinForms 到 WPF,再到近年來 WinRT、UWP 及 WinUI 3 的演進史,指出微軟頻繁更換技術框架卻缺乏延續性,導致開發者在效能與現代化開發體驗之間陷入兩難。

社群觀點

Hacker News 的討論反映出開發者對微軟 UI 框架政策的普遍不滿。許多資深工程師指出,Windows 開發環境在過去十五年間持續惡化,微軟不斷推出新框架卻不願正式淘汰舊技術,導致開發者無所適從。這種「技術堆疊混亂」最顯著的後果是連微軟自家產品如 Teams 或新版 Outlook 都放棄原生開發,轉而擁抱 Electron 等 Web 技術。社群普遍認為,UWP 的失敗是轉折點,微軟試圖將桌面系統強行轉型為行動化沙盒環境,卻忽視了專業用戶與開發者的實際需求。

在技術選擇上,社群呈現出明顯的分歧。一派觀點堅定支持 Win32 與 WinForms,認為其向後相容性極其驚人,即便是在 Windows 95 時代編寫的程式,在 Visual Studio 2022 中稍作調整仍能完美運行。這種穩定性是現代 Web 框架難以企及的,儘管 WinForms 在處理高解析度縮放(DPI)與動態佈局上顯得力不從心。另一派開發者則認為,既然微軟官方框架如此破碎,不如轉向跨平台的第三方方案。Qt 被多次提及為目前最成熟、效能最接近原生的替代品,而 Lazarus 與 Delphi 則因其高效的開發體驗仍擁有一群忠實擁躉。

有趣的是,討論中出現了將遊戲引擎用於一般軟體開發的聲音。部分開發者提議 Godot 或 Unity 可能是未來的潛在競爭者,因為它們內建了強大的 UI 組件與渲染系統,且能避開 Windows 原生 API 的繁瑣限制。然而,也有反對意見指出遊戲引擎的執行緒模型與資源佔用並不適合傳統的辦公或工具類軟體。此外,針對作者對 C++ 記憶體安全性的擔憂,有評論者認為對於小型工具程式而言,現代 C++ 已足夠安全,過度追求框架的現代化反而可能引入不必要的複雜性。

最後,社群對微軟的未來策略感到悲觀。開發者們質疑為何微軟不願像蘋果那樣進行徹底的系統重構,而是選擇在舊有的 Win32 基礎上不斷疊加半成品般的封裝層。這種缺乏長遠願景的做法,正逐漸將開發者推向 Web 棧,最終導致 Windows 失去其作為原生應用平台的獨特優勢。

延伸閱讀

在討論中,開發者們提到了一些值得關注的替代方案與資源。除了知名的 Qt 與 Flutter 外,Lazarus 與 Delphi 被視為處理 Win32 開發的遺珠。針對輕量化需求,有留言推薦使用 TCL/Tk 搭配原生佈局,能以極小的體積實現原生外觀。此外,Godot 引擎官方也推出了針對非遊戲應用開發的專門指南,展示了其在一般軟體開發上的潛力。

https://domenic.me/windows-native-dev/