Открыть сервис

Edge WebView2

Edge WebView2 — это компонент Microsoft, встраиваемый в приложения, который позволяет разработчикам отображать веб-содержимое (HTML, CSS, JavaScript) в нативных приложениях для Windows, используя в качестве движка рендеринга Microsoft Edge на базе Chromium. WebView2 предоставляет возможность создавать гибридные приложения, сочетающие преимущества нативного кода (доступ к файловой системе, оборудованию, системным API) и современных веб-технологий.

История

Разработка WebView2 была начата компанией Microsoft в 2018 году как замена устаревшему компоненту WebBrowser (Internet Explorer control) и более ранней версии WebView на основе EdgeHTML. Первая публичная предварительная версия вышла в 2019 году. Стабильный релиз состоялся в 2021 году. Основной причиной создания стало прекращение поддержки Internet Explorer 11 и необходимость предоставить разработчикам современный, безопасный и постоянно обновляемый инструмент для встраивания веб-контента. В отличие от предыдущих решений, WebView2 использует тот же движок, что и браузер Microsoft Edge, что гарантирует совместимость с современными веб-стандартами и автоматические обновления безопасности.

Архитектура и принцип работы

Движок рендеринга

WebView2 базируется на открытом проекте Chromium, который также лежит в основе Microsoft Edge. Это обеспечивает поддержку последних версий HTML, CSS, JavaScript, а также API для работы с графикой, мультимедиа и сетевыми запросами. Обновления движка происходят автоматически через механизм обновления Microsoft Edge, что избавляет разработчика от необходимости самостоятельно поддерживать актуальность компонента.

Модель размещения

WebView2 представляет собой элемент управления, который может быть размещён в окне нативного приложения, написанного на C++, C# (WPF, WinForms), .NET MAUI, WinUI 3 или других языках и фреймворках, поддерживающих COM-интерфейсы. Компонент работает в отдельном процессе (процесс рендеринга), изолированном от основного приложения, что повышает стабильность и безопасность.

Взаимодействие с нативным кодом

Ключевой особенностью WebView2 является двусторонняя связь между веб-контентом и нативным кодом:

  • Нативный код → веб-контент: Разработчик может вызывать JavaScript-функции, изменять DOM, загружать URL-адреса, управлять навигацией и историей.
  • Веб-контент → нативный код: Через специальный механизм (HostObject) JavaScript может вызывать методы нативного объекта, передавать данные и получать результаты. Это позволяет, например, открыть диалоговое окно файловой системы из веб-страницы или выполнить системную команду.

Режимы работы

WebView2 поддерживает несколько режимов распространения и обновления, что даёт гибкость в зависимости от требований приложения:

  • Режим Evergreen (постоянно обновляемый): Компонент использует установленную на компьютере версию Microsoft Edge. Обновления происходят автоматически. Этот режим рекомендуется для большинства приложений, так как обеспечивает актуальность и безопасность.
  • Режим Fixed Version (фиксированная версия): Разработчик включает в состав своего приложения определённую версию WebView2 Runtime. Это гарантирует, что приложение будет работать с одной и той же версией движка, что важно для корпоративных сред или приложений, требующих строгой совместимости. Однако обновления безопасности в этом случае ложатся на разработчика.
  • Режим Standalone (автономный): Приложение распространяется вместе с полным установщиком WebView2 Runtime, который устанавливается на компьютер пользователя, если он отсутствует.

Применение

WebView2 используется в широком спектре приложений:

  • Гибридные настольные приложения: Объединение нативного интерфейса (меню, панели инструментов, диалоги) с веб-контентом (сложные формы, дашборды, редакторы). Примеры: Microsoft Teams, Visual Studio Code (частично), Outlook для Windows.
  • Встраивание веб-сервисов: Отображение веб-сайтов, порталов или облачных приложений непосредственно в окне нативного приложения без необходимости открывать браузер.
  • Создание оболочек для веб-приложений: Превращение веб-сайта в настольное приложение с доступом к системным функциям (уведомления, работа с файлами, офлайн-режим).
  • Разработка игр и мультимедиа: Использование WebView2 для отображения интерфейсов, меню, рекламы или встраивания веб-игр.
  • Корпоративные приложения: Интеграция с внутренними веб-системами, отображение отчётов, документов и панелей управления.

Преимущества и недостатки

Преимущества

  • Современный движок: Полная поддержка современных веб-стандартов, включая CSS Grid, Flexbox, WebAssembly, WebGL.
  • Автоматические обновления: В режиме Evergreen безопасность и совместимость поддерживаются автоматически.
  • Безопасность: Изоляция процесса рендеринга, поддержка политик безопасности (CSP, Same-Origin Policy).
  • Производительность: Высокая скорость рендеринга и низкое потребление памяти по сравнению с устаревшими решениями.
  • Кроссплатформенность (ограниченная): Изначально разработан для Windows, но существуют реализации для macOS и Linux через WebView2 для .NET MAUI.

Недостатки

  • Зависимость от Microsoft Edge: Для работы требуется наличие WebView2 Runtime или установленного браузера Edge.
  • Размер: Установщик WebView2 Runtime занимает около 100–200 МБ, что может быть критично для очень лёгких приложений.
  • Ограничения безопасности: Как и любой браузерный движок, WebView2 может быть подвержен веб-уязвимостям (XSS, CSRF), если разработчик не обеспечит должную защиту.
  • Отсутствие полной изоляции: Хотя процесс рендеринга изолирован, нативный код и веб-контент могут взаимодействовать, что создаёт потенциальные риски при неправильной реализации.

Интересные факты

  • WebView2 стал основой для нового интерфейса Microsoft Teams, который заменил старую версию на Electron.
  • Компонент поддерживает отладку через инструменты разработчика Microsoft Edge (F12), что упрощает разработку гибридных приложений.
  • В 2023 году Microsoft объявила, что WebView2 будет использоваться для создания будущих версий Windows Terminal и других системных приложений.
  • Существует возможность использовать WebView2 в приложениях, написанных на Python (через библиотеку webview2), Rust и других языках.

Критика

Основные критические замечания касаются:

  • Привязки к экосистеме Microsoft: Разработчики, использующие другие платформы (Linux, macOS), вынуждены искать альтернативы (например, Electron, Tauri).
  • Размера и сложности: Для простых задач (например, отображение одной HTML-страницы) WebView2 может быть избыточным.
  • Проблем с совместимостью: В редких случаях обновления Edge могут нарушить работу приложений, использующих WebView2 в режиме Evergreen.

Источники

  • Документация Microsoft: «Introduction to Microsoft Edge WebView2» (Microsoft Learn).
  • Статья «WebView2: The new way to embed web content in your Windows apps» (Microsoft Developer Blog, 2021).
  • Спецификация WebView2 API (Microsoft Docs).
  • Обсуждения на Stack Overflow и форумах Microsoft.
  • Статья «WebView2 vs Electron: A Comparison» (Various tech blogs).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →