Рекомендации по разработке приложений WebView2

Каждая команда разработчиков придерживается различных методик при создании своего приложения. При создании рабочих приложений WebView2 рекомендуется следовать этим рекомендациям и рекомендациям.

Обычно рекомендуется использовать среду выполнения Evergreen WebView2. Фиксированное распределение среды выполнения версий рекомендуется только для приложений со строгими требованиями к совместимости. Среда выполнения Evergreen автоматически обновляется на клиенте, чтобы в приложении WebView2 были доступны последние функции и исправления для системы безопасности. Среда выполнения Evergreen также требует меньше места на диске, чем среда выполнения фиксированной версии.

Если вы используете среду выполнения Evergreen, перед запуском приложения WebView2 проверьте, установлена ли на клиенте среда выполнения Evergreen WebView2. См . статью Развертывание среды выполнения Evergreen WebView2.

Регулярное выполнение тестов совместимости при использовании среды выполнения Evergreen

При использовании среды выполнения Evergreen WebView2 среда выполнения обновляется автоматически, поэтому необходимо регулярно выполнять тесты совместимости. Чтобы убедиться, что приложение WebView2 будет работать должным образом, протестируйте веб-содержимое в элементе управления WebView2 в каналах предварительной оценки Microsoft Edge (предварительная версия) (бета-версия, разработка или canary).

Это руководство похоже на руководство, которое мы предоставляем веб-разработчикам. См . раздел Тестирование приложения для обеспечения совместимости с пересылкой.

Проверьте, поддерживаются ли более новые API в установленной среде выполнения WebView2.

Чтобы запустить приложение WebView2, разработанное с помощью определенной версии пакета SDK для Webview2, на клиенте должна быть установлена совместимая версия среды выполнения WebView2. Так как API-интерфейсы постоянно добавляются в WebView2, выпускаются новые версии среды выполнения для поддержки новых API. Используйте обнаружение функций, чтобы убедиться, что новые API, используемые приложением WebView2, поддерживаются средой выполнения WebView2, установленной на клиенте.

Если вы используете среду выполнения Evergreen WebView2, существуют некоторые сценарии, в которых среда выполнения на клиенте не была автоматически обновлена до последней версии. Например, если у клиента нет доступа к Интернету, среда выполнения не обновляется автоматически.

Кроме того, некоторые групповые политики приостанавливают обновление среды выполнения. При отправке обновления в приложение WebView2 приложение может не работать, если оно попытается вызвать более новые API, недоступные в установленной среде выполнения клиента.

Чтобы решить эту проблему, прежде чем код вызовет недавно добавленный API WebView2, проверьте, доступен ли этот API в установленной среде выполнения клиента. Этот тест на наличие новых функциональных возможностей аналогичен другим рекомендациям по веб-разработке, которые определяют поддерживаемые функции перед использованием новых веб-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 событие, чтобы приложение и 2 ранее 2 ранее не хлышало после сбоев процессов среды выполнения, поддерживающих процесс приложения WebView2.

Приложения WebView2 поддерживаются набором процессов среды выполнения, которые выполняются вместе с процессом приложения. Эти вспомогательные процессы среды выполнения могут завершиться по различным причинам, например нехваткой памяти или завершением пользователем. Если вспомогательный процесс среды выполнения завершается сбоем, WebView2 уведомляет приложение, вызывая событие ProcessFailed.

Обработчики событий в объекте среды

Если какой-либо из обработчиков событий приложения в объекте среды содержит ссылку на объект среды и приложение просто освобождает ссылку на среду и обработчики событий, не удаляя обработчики событий, между объектом среды и объектами обработчика может быть циклическая ссылка, что приведет к утечке памяти.

Чтобы предотвратить такую утечку памяти, выполните следующие действия:

  • Для любого добавленного обработчика событий удалите обработчик событий перед освобождением объекта среды.

  • Избегайте хранения ссылки на объект среды в обработчике событий. Вместо этого обработчик событий может получить доступ к объекту sender среды из аргумента обратного вызова event completed.

  • Если вы хотите, чтобы приложение держало ссылку на объект WebView2, по возможности используйте слабую ссылку.

Для любого приложения WebView2 обязательно следуйте рекомендациям, приведенным в статье Разработка безопасных приложений WebView2.