WebView2 應用程式的開發最佳做法

每個開發小組在建置應用程式時都會遵循不同的做法。 當您建置 WebView2 生產應用程式時,建議您遵循這些建議和最佳做法。

我們通常建議使用 Evergreen WebView2 執行時間。 只有具有嚴格相容性需求的應用程式才建議使用固定版本執行時間發佈。 Evergreen 執行時間會在用戶端上自動更新,讓 WebView2 應用程式可以使用最新的功能和安全性修補程式。 比起固定版本執行時間,Evergreen 執行時間在磁片上也需要較少的儲存空間。

如果您在執行 WebView2 應用程式之前使用 Evergreen 執行時間,請測試是否已在用戶端上安裝 Evergreen WebView2 執行時間。 請參閱 部署 Evergreen WebView2 執行時間

使用 Evergreen 執行時間時定期執行相容性測試

使用 Evergreen WebView2 執行時間時,執行時間會自動更新,因此您必須定期執行相容性測試。 若要確保您的 WebView2 應用程式能如預期般繼續運作,請在 WebView2 控制項中針對 Microsoft Edge 測試人員 (預覽) 通道 測試您的 Web 內容, (Beta、Dev 或 Canary) 。

本指引類似于我們提供給 Web 開發人員的指引。 請參閱 測試您的應用程式以獲得順向相容性

測試已安裝的 WebView2 執行時間是否支援較新的 API

若要執行以特定版本的 Webview2 SDK 開發的 WebView2 應用程式,用戶端必須安裝相容版本的 WebView2 執行時間。 由於 API 會持續新增至 WebView2,因此也會發行新版本的執行時間來支援新的 API。 使用功能偵測,確定用戶端上安裝的 WebView2 執行時間支援 WebView2 應用程式所使用的較新 API。

如果您使用 Evergreen WebView2 執行時間,在某些情況下,用戶端上的執行時間尚未自動更新為最新版本。 例如,如果用戶端沒有網際網路存取權,執行時間就不會自動更新。

此外,某些群組原則會暫停更新執行時間。 當您將更新推送至 WebView2 應用程式時,如果應用程式嘗試呼叫用戶端已安裝執行時間中無法使用的較新 API,則可能無法運作。

若要解決這種情況,在您的程式碼呼叫最近新增的 WebView2 API 之前,請測試該 API 是否可在用戶端安裝的執行時間中使用。 這項較新功能的測試類似于其他 Web 開發最佳做法,可在使用新的 Web API 之前偵測支援的功能。 若要在已安裝的執行時間中測試 API 可用性,請使用下列其中一項:

  • QueryInterface 在 C/C++ 中。
  • try/catch.NET 或 WinUI 中的區塊。

請參閱 功能偵測以測試已安裝的執行時間是否支援最近新增的 API

更新固定版本執行時間

如果您使用固定版本 WebView2 執行時間,請確定您定期更新已封裝在應用程式中的 WebView2 執行時間,以降低安全性風險。 在 Webview2 應用程式中使用協力廠商內容時,請一律將內容視為不受信任。 請參閱 固定版本發佈模式

管理新版本的 Evergreen 執行時間

將新版本的 Evergreen WebView2 執行時間下載到用戶端時,任何執行中的 WebView2 應用程式都會繼續使用舊版的執行時間,直到瀏覽器程式發行為止。 此行為可讓應用程式持續執行,並防止刪除先前的執行時間。 若要使用新版的執行時間,您必須釋放先前 WebView2 環境物件的所有參考,或重新開機您的應用程式。 下次您的應用程式建立新的 WebView2 環境時,應用程式將會使用新版的執行時間。

當有新版本的執行時間可用時,您的應用程式可以自動採取動作,例如通知使用者重新開機應用程式。 若要偵測有新版本的執行時間可用,您可以在程式碼中使用 add_NewBrowserVersionAvailable (Win32) CoreWebView2Environment.NewBrowserVersionAvailable (.NET) 事件。 如果您的程式碼處理重新開機應用程式,請考慮在 WebView2 應用程式結束之前儲存使用者狀態。

管理使用者資料檔案夾的存留期

WebView2 應用程式會建立使用者資料檔案夾來儲存 Cookie、認證和許可權等資料。 建立資料夾之後,您的應用程式會負責管理使用者資料檔案夾的存留期。 例如,卸載應用程式時,您的應用程式必須執行清除。 請參閱 管理使用者資料檔案夾

處理執行時間進程失敗

您的 WebView2 應用程式應該接聽並處理 ProcessFailed 事件,讓應用程式可以從支援 WebView2 應用程式程式的執行時間進程失敗中復原。

WebView2 應用程式是由與應用程式程式一起執行的執行時間進程集合所支援。 這些支援的執行時間進程可能會因為各種原因而失敗,例如記憶體不足或使用者終止。 當支援的執行時間進程失敗時,WebView2 會引發 ProcessFailed 事件來通知應用程式。

環境物件上的事件處理常式

如果 環境物件 上任何應用程式的事件處理常式持有環境物件的參考,而且應用程式只會釋放環境和事件處理常式的參考,而不會移除事件處理常式,則環境物件和處理常式物件之間可能會有迴圈參考,這會流失記憶體。

若要防止這類記憶體流失:

  • 對於任何新增的事件處理常式,請先移除事件處理常式,再釋放環境物件。

  • 避免在事件處理常式中保留環境物件的參考。 相反地,事件處理常式可以從 sender 「event completed」 回呼的 引數存取環境物件。

  • 如果您想要應用程式保存 WebView2 物件的參考,請盡可能使用弱式參考。

對於任何 WebView2 應用程式,請務必遵循 開發安全 WebView2 應用程式中的建議。