.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

張傳寧 發表於 2022-06-28
.Net

WebView2控制元件應用詳解系列部落格

.NET桌面程式整合Web網頁開發的十種解決方案

.NET混合開發解決方案1 WebView2簡介

.NET混合開發解決方案2 WebView2與Edge瀏覽器的區別

.NET混合開發解決方案3 WebView2的程式模型

.NET混合開發解決方案4 WebView2的執行緒模型

.NET混合開發解決方案5 WebView2執行時與分發應用

.NET混合開發解決方案7 WinForm程式中通過NuGet管理器引用整合WebView2控制元件

.NET混合開發解決方案8 WinForm程式中通過設定固定版本執行時的BrowserExecutableFolder屬性整合WebView2控制元件

.NET混合開發解決方案9 WebView2控制元件的導航事件

.NET混合開發解決方案10 WebView2控制元件呼叫網頁JS方法

.NET混合開發解決方案11 網頁JS呼叫C#方法

.NET混合開發解決方案12 網頁JS呼叫C#方法訪問WinForm或WPF窗體

.NET混合開發解決方案13 自定義WebView2中的上下文選單

.NET混合開發解決方案14 WebView2的基本身份驗證

.NET混合開發解決方案15 WebView2控制元件整合到WinForm程式編譯後的檔案及結構說明

.NET混合開發解決方案16 管理WebView2的使用者資料

.NET混合開發解決方案17 清除WebView2的快取記錄

.NET混合開發解決方案18 除錯WebView2應用

.NET混合開發解決方案19 使用 DevTools 協議幫助程式 

.NET混合開發解決方案20 使用 Microsoft Edge WebDriver 自動執行和測試 WebView2 應用

.NET混合開發解決方案21 WebView2 應用的開發最佳做法

.NET混合開發解決方案22 開發安全的 WebView2 應用

.NET混合開發解決方案23 將 WebView2 應用分發為單個可執行檔案

  在本系列的前面多篇文章中介紹了WebView2從入門到整合的詳細過程以及核心知識點。我為什麼會寫這麼多篇部落格來記錄WebView2的使用歷程,主要是在開發《建築工程施工圖BIM智慧審查系統》過程中,勘察設計單位端與審查專家端(C/S架構 WinForm)的程式整合了Web端BIMFace的功能。第一次使用了CefSharp元件,整合開發結束後,測試及使用過程中遇到了一些無法處理的bug及嚴重的效能問題。然後又測試對比了其他多種元件,具體情況可以閱讀我的部落格《.NET桌面程式整合Web網頁開發的十種解決方案》。最終選用了微軟新出品的基於Edge瀏覽器的WebView2元件,經過測試及大量客戶實際應用,可以直觀的感受到WebView2元件的功能穩定性與其他強大、便捷之處。

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

下面通過多方位的對比WebView2與CefSharp元件,讓大家有更直觀的感受,拋磚引玉,希望對大家有所幫助。

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

如有表述不當,請大家及時指出。兩者還有一些其他常用功能,這裡無法詳盡列出,大家可以在使用中再仔細對比。

其中第23項的現象如下

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

 

其中第24、25項的對比

  • 使用CefSharp元件載入大體量BIM模型渲染失敗的現象

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

  • 使用WebView2元件載入大體量BIM模型渲染成功的現象

.NET混合開發解決方案24 WebView2對比CefSharp的超強優勢

(1)CefSharp元件載入Web網頁,BIMFACE輕量化後的模型載入到38%左右時,渲染失敗,呈現黑色效果,客戶端電腦的CPU跑滿,記憶體消耗95%。在建築工程施工圖BIM智慧審查應用場景中,BIM模型相對CAD、PDF來說,模型尺寸呈幾何級增長,超大模型甚至達到10G,構件數量達到萬級、三角片面數量達到百萬甚至千萬級。 同一臺電腦,同一套程式,使用WebView2元件載入相同的大模型時一切正常,且CPU、記憶體均比使用CefSharp時使用率低。

(2)CefSharp載入大體量模型時,當記憶體消耗過高時,導致客戶端程式閃退。 WebView2元件不存在該問題。

 

  經過對比不難發現 Cefsharp 與 WebView2 元件的功能都非常豐富。客戶端程式如果只是整合簡單的網頁應用,二者任選其一都可以,前提是客戶端電腦的縮放比例必須是100%。如果是載入遊戲、二維圖紙、三維模型等複雜內容時,建議使用微軟的WebView2元件,其效能與穩定性比CefSharp處理的更好。