.NET桌面程式應用WebView2元件整合網頁開發3 WebView2的程式模型

張傳寧發表於2022-04-27

  WebView2 執行時使用與 Microsoft Edge 瀏覽器相同的程式模型。

WebView2 執行時中的程式

  WebView2 程式組是 WebView2 執行時程式的集合。 WebView2 程式組包括以下內容:

  • 單個瀏覽器程式。
  • 一個或多個渲染器(呈現器)程式。
  • 其他幫助程式程式,例如 GPU 程式和音訊服務程式。

當WebView2應用程式使用WebView2功能時,WebView2程式組中程式的數量和存在可能會發生變化。(但是,WebView2程式組中只有一個特定的瀏覽器程式。)例如,從同一個 CoreWebView2Environment 市裡建立新的WebView2例項,但在源屬性中使用不同的域,通常會啟動一個新的渲染器程式。

渲染器程式的數量可能會根據以下情況而變化:

  • 在WebView2執行時中使用站點隔離功能。請參見每幀渲染器程式-站點隔離
  • 在使用同一使用者資料資料夾的WebView2例項中呈現的不同斷開連線的源的數量。

控制何時建立這些額外程式的邏輯取決於Chromium體系結構,並且超出了 WebView2 執行時的範圍。

 

下面是在真實專案中測試的結果

(1)電腦關機,重新開機,未執行Edge瀏覽器,且未執行與WebView2相關的宿主應用程式。

.NET桌面程式應用WebView2元件整合網頁開發3 WebView2的程式模型

後臺程式中有5個預設Edge程式在執行

.NET桌面程式應用WebView2元件整合網頁開發3 WebView2的程式模型

(2)執行“建築工程施工圖AI審查系統”,其中紅色框內是使用WebView2元件載入的網頁應用

.NET桌面程式應用WebView2元件整合網頁開發3 WebView2的程式模型

工作管理員中,程式“Zjgsgts.Sczj”下啟動了7個WebView2的子程式

其中某個第1個、第2個程式是渲染器程式,因為三維模型的渲染過程消耗的記憶體較多。第3、4、5、6、7是GPU程式或者其他幫助類程式程式。

而瀏覽器程式依然為5個,說明其中一個是 WebView2 程式組中的瀏覽器程式。

在宿主程式的根目錄下多了兩個資料夾
  • runtimes 目錄
    • 結構如下圖,包含一個WebView2執行時載入器元件  WebView2Loader.dll 。

  •  Zjgsgtsc.Sczj.exe.WebView2 目錄
    • 結構圖下圖,裡面包含執行過程中其他的輔助配置資訊以及快取等資訊
關於該目錄資訊,在後續的部落格中會詳解介紹。
WebView2 執行時程式和使用者資料資料夾

  WebView2 執行時程式集合中的所有程式都繫結到瀏覽器程式,而瀏覽器程式又與單個使用者資料資料夾相關聯。 如果應用程式使用多個使用者資料資料夾,將為每個使用者資料資料夾建立 WebView2 執行時程式的集合。

  使用者資料資料夾可由多個應用程式共享,但請務必考慮對效能和管理的影響,如“管理使用者資料”資料夾中所述。

  若要使用多個使用者資料資料夾,WebView2 應用程式需要建立不同的 CoreWebView2Environment 物件。 WebView2通過配置的物件為給定使用者資料資料夾建立CoreWebView2Environment例項。 每個 CoreWebView2Environment 物件都需要使用不同的使用者資料資料夾值進行配置。

  為給定的使用者資料資料夾建立第一個WebView2例項時,將啟動與該使用者資料資料夾關聯的WebView2執行時程式集合的瀏覽器程式。所有其他程式都將在該瀏覽器程式的生命週期內進行管理。

  CoreWebView2Environment代表一個使用者資料資料夾及其相關程式的集合。給定的渲染器程式與單個CoreWebView2例項不關聯,因為渲染器程式可以為使用同一使用者資料資料夾的多個CoreWebView2例項中的幀提供服務,具體取決於網站隔離。請參見每幀渲染器程式-站點隔離

處理程式事件和生命週期

若要對瀏覽器和渲染器程式中的崩潰和掛起做出反應,請使用 CoreWebView2 的 ProcessFailed 事件。

若要安全地關閉相關的瀏覽器和渲染器程式,請使用 CoreWebView2Controller 的 Close 方法。

若要開啟瀏覽器工作管理員,請呼叫 OpenTaskManagerWindows 方法。

其他事件,請參考 WebView2 API

 

相關文章