如何選擇UI框架
- 2019 年 10 月 28 日
- 筆記
Windows介面開發,筆者使用過的方案有三種:MFC、Duilib、WEB(基於CEF運行容器),各有優缺點。
MFC進行介面開發,其所見即所得,通過嚮導方便給控制項增加處理函數,實現很簡單,初學者練手必備,但它的缺點也是很明顯的,不是使用DUI技術,沒有布局概念,不支援背景貼圖,很難做出炫酷的介面,適合介面要求不高的工具類產品(比如測試工具)。
Duilib進行介面開發,其使用DUI技術,通過XML文件編寫布局、控制項、設置屬性,中國很多知名軟體(包括微信PC版、91助手、釘釘等)都使用Duilib庫作為介面開發庫,缺點是有bug很久沒有更新,如果自己沒有介面開發庫的沉澱,建議將Duilib庫作為基礎,進行擴展和BUG修訂。
基於CEF運行容器的WEB技術進行介面開發,WEB強大的渲染能力無需多說,缺點是軟體包需要攜帶CEF庫(70M左右),需要擴展CEF支援WEB調用原生能力。如果產品本身是WEB形態,採用WEB技術介面開發,再合適不夠。
筆者在項目實踐過程中,採用混合開發方案,將Duilib和WEB兩種方案結合起來,對於要求高性能的介面(比如窗口實時渲染)使用Duilib(C++)開發,對於複雜介面、炫酷介面使用WEB開發,然後擴展CEF提供JS介面讓WEB可以跟原生C++層進行通訊,基於該通訊通道WEB就可以將需要調用原生的邏輯交給C++來實現。混合開發方案充分利用WEB強大渲染能力,又解決了WEB性能差、與原生系統交互能力差的問題。許多移動端產品也使用混合開發方案,比如天貓手機端。
除此之外,還有其它的介面框架可供選擇:
l Electron, 最大優點就是跨平台,一套程式碼就可以在Windows、Linux、MacOS桌面系統上運行,其基於nodejs開發electron module,electron module內包含chromium內核(類似於CEF),使用WEB技術開發。
l QT,最大優點也是跨平台,一套程式碼可以在桌面系統Windows、Linux、MacOS,移動端系統Android、iOS、WP上運行,使用C++語言開發。
l WPF,微軟推出基於Windows的用戶介面框架,屬於.NET Framework 3.0的一部分,使用C#語言開發。
在選擇介面開發框架時,要結合產品形態、團隊開發人員的情況作出決策。
第一,產品需要支援的平台要有清楚的認識,如果需要支援多個平台,就要考慮跨平台的框架,自己開發跨平台框架的難度是很大的。如果需要支援XP,就要注意介面開發框架是否支援,許多框架已經不支援XP系統。
第二,產品是否有WEB版本,如果有WEB版本優先選擇支援WEB開發技術的框架,WEB應用轉原生應用,套CEF容器再少量適配修改就能解決,反過來,原生應用WEB化,得重做。
第三,產品對性能要求、原生能力調用方面的評估,對性能要求高、原生能力交互強,不建議使用WEB開發技術的框架,其性能差、不方便與原生系統交互是其主要的缺點。
第四,評估開發團隊的主要人員是C++,還是Web,還是C#,然後選擇相應的框架。