共用方式為


WebView2 應用程式的開發最佳實務

我們建議以下最佳實務來開發生產版 WebView2 應用程式。

使用 Evergreen WebView2 執行時

我們建議大多數 WebView2 應用程式使用 Evergreen WebView2 執行環境,而非固定版本執行環境。

Evergreen 執行環境會自動在用戶端更新,使最新的功能與安全修補程式能在 WebView2 應用程式中使用。 常青執行時所需的磁碟儲存空間也比固定版本執行時少。 僅建議對相容性要求嚴格的應用程式使用固定版本執行時分發。

請參見 Evergreen 與固定版 WebView2 執行時的比較。

為了確保你的 WebView2 應用程式能與 Evergreen WebView2 執行環境良好運作,請參考以下小節中的建議做法:

請確認 WebView2 執行時已經安裝

在使用 Evergreen WebView2 執行環境時,在您的應用程式使用 WebView2 控制項之前,請程式化檢查是否已安裝 Evergreen WebView2 執行環境。

請參閱「Distribute your app」和「WebView2 執行環境」中偵測 WebView2 執行環境是否已安裝

處理 WebView2 執行時的更新

使用 Evergreen WebView2 執行時,需處理 Evergreen WebView2 執行時的更新。 Evergreen WebView2 執行匯報會自動下載,但執行中的 WebView2 應用程式仍會使用目前版本的 WebView2 執行時,可能會缺少安全更新。 要採用新版本,應用程式必須解除所有先前 WebView2 物件的引用或重新啟動。 實作 NewBrowserVersionAvailable 事件處理程式可以提示使用者重新啟動應用程式以更新,並建議在退出前儲存使用者狀態,以實現無縫過渡。

請參閱「 處理 Evergreen WebView2 執行時更新 」中的「 分發你的應用程式」和 WebView2 執行時

使用 Edge 預覽通道進行前向相容性測試

使用 Evergreen WebView2 執行時,請使用 Edge (Beta、Dev 或 Canary) 的預覽通道Microsoft進行前向相容性測試。

由於 Evergreen Runtime 會自動更新,你應該定期執行相容性測試,以確保你的 WebView2 應用程式能在新的執行版本上繼續正常運作。 這可以透過在 WebView2 控制項中測試你的網頁內容,與 Microsoft Edge 預覽頻道進行測試來達成。

請依照預發布測試的指引, 使用預覽頻道自架,並部署預覽頻道

使用功能偵測來偵測較新的 API

使用 Evergreen WebView2 執行時,請使用功能偵測測試已安裝的執行環境是否支援最近新增的 API。 若要執行以特定版本 Webview2 SDK 開發的 WebView2 應用程式,客戶端必須安裝相容版本的 WebView2 執行環境。

使用 Evergreen WebView2 執行時,有些情況是客戶端執行時尚未自動更新到最新版本。 此外,部分群組政策會暫停執行時的更新。 因此,當你推送更新到 WebView2 應用程式時,如果它嘗試呼叫客戶端已安裝執行環境中沒有的新 API,應用程式可能會無法運作。 因此,你應該使用功能偵測,確保 WebView2 應用程式使用的較新 API 是否被安裝在用戶端的 WebView2 執行環境所支援。

請參閱 功能偵測,以測試安裝的執行環境是否支援WebView2 預釋版及釋出版 SDK 中近期新增的 API。

若使用 Fixed Version Runtime,請定期更新

如果你使用固定版 WebView2 執行環境,務必定期更新隨應用程式附帶的 WebView2 執行環境,以降低安全風險。 要判斷你應該多久更新一次固定版本執行時,應該考慮你應用程式的威脅模型。 例如,在 Webview2 應用程式中使用第三方內容時,務必將該內容視為不可信。

請參閱:

管理使用者資料資料夾的存續期

WebView2 應用程式會建立一個使用者資料資料夾來儲存 Cookie、憑證和權限等資料。 建立使用者資料資料夾後,您的應用程式負責管理該資料夾的存續期。 例如,當應用程式卸載時,你的應用程式必須進行清理。

請參閱:

處理執行時程序失敗或退出

WebView2 應用程式由一組與應用程式程序同時執行的執行時程序所支援。 這些支援的執行時程序可能因各種原因而失敗,例如記憶體不足或被使用者終止。 你的 WebView2 應用程式應該能處理這些與流程相關的事件,以確保應用程式能從故障中恢復並持續順暢運行。

請參見 WebView2 中的處理流程相關事件

環境物件上的事件處理程序

如果你的應用程式在物件上 CoreWebView2Environment 的任何事件處理程式持有對環境物件的參考,而應用程式只是釋放對環境和事件處理程序的參考,卻沒有移除事件處理器,那麼環境物件和處理器物件之間可能會形成循環參考,導致記憶體洩漏。

為了防止此類記憶體洩漏:

  • 對於新增的事件處理程序,先移除事件處理程序,再釋放環境物件。

  • 避免在事件處理程序中保留環境物件的參考。 事件處理器可從 sender 「事件完成」回撥的參數存取環境物件。

  • 如果你想讓應用程式保留對 WebView2 物件的參考,盡量使用弱參考。

遵循安全最佳實務

WebView2 讓你能在原生應用程式中架設網頁內容,提供使用網頁介面、存取網頁平台功能及跨平台共享程式碼等優勢。

然而,架設網頁內容也可能帶來漏洞。 為避免在原生應用程式中托管網頁內容可能產生的漏洞,務必設計 WebView2 應用程式,密切監控網頁內容與主機應用程式之間的互動。

請依照 「開發安全 WebView2 應用程式」的指引操作。

另請參閱

WebView2 參考資料:

Microsoft Edge Enterprise 文件: