Поделиться через


Обзор приложений браузера WPF XAML

приложения браузера XAML (XBAPs) объединяют функции веб-приложений и богатых клиентских приложений. Как и в веб-приложениях, XBAPs можно развернуть на веб-сервере и запустить из Internet Explorer или Firefox в Windows. Как и в расширенных клиентских приложениях, XBAPs может воспользоваться преимуществами возможностей WPF. Разработка XBAPs также похожа на разработку с расширенными клиентами. В этом разделе представлено простое, высокоуровневое введение в разработку XBAP и описание того, где разработка XBAP отличается от стандартной разработки с богатыми клиентами.

Предупреждение

Для работы XBAPs требуются устаревшие браузеры, такие как Internet Explorer и старые версии Firefox. Эти старые браузеры обычно не поддерживаются в Windows 10 и Windows 11. Современные браузеры больше не поддерживают технологию, необходимую для приложений XBAP из-за рисков безопасности. Модули, позволяющие работу с XBAP, перестали поддерживаться. Дополнительные сведения см. в статье Часто задаваемые вопросы о приложениях, размещенных в браузере WPF (XBAP),.

В этом разделе содержатся следующие разделы:

Создание нового приложения браузера XAML (XBAP)

Самый простой способ создания нового проекта XBAP — в Visual Studio. При создании нового проекта выберите в списке шаблонов приложение браузера WPF. Дополнительные сведения см. в статье How to: Create a New WPF Browser Application Project.

При запуске проекта XBAP он открывается в окне браузера вместо автономного окна. В ходе отладки XBAP из Visual Studio приложение запускается с разрешением для зоны Интернета, и поэтому вызывает исключения безопасности, если этот уровень разрешений будет превышен. Дополнительные сведения см. в разделе Безопасность и Безопасность частичного доверия WPF.

Заметка

Если вы не разрабатываете с использованием Visual Studio или хотите узнать больше о файлах проекта, ознакомьтесь с созданием приложения WPF.

Развертывание XBAP

При сборке XBAP выходные данные включают следующие три файла:

Файл Описание
Исполняемый файл (.exe) Он содержит скомпилированный код и имеет расширение .exe.
Манифест приложения (.manifest) Это содержит метаданные, связанные с приложением, и имеет расширение .manifest.
Манифест развертывания (.xbap) Этот файл содержит сведения о том, что ClickOnce использует для развертывания приложения и имеет расширение XBAP.

Вы развертываете XBAPs на веб-сервере, например microsoft Internet Information Services (IIS) 5.0 или более поздних версий. Вам не нужно устанавливать платформу .NET Framework на веб-сервере, но необходимо зарегистрировать типы расширений электронной почты WPF (MIME) и расширения имен файлов. Дополнительные сведения см. в статье Настройка IIS 5.0 и IIS 6.0 для развертывания приложений WPF.

Чтобы подготовить XBAP к развертыванию, скопируйте .exe и связанные манифесты на веб-сервер. Создайте HTML-страницу, содержащую гиперссылку, чтобы открыть манифест развертывания, который является файлом с расширением XBAP. Когда пользователь щелкает ссылку на XBAP-файл, ClickOnce автоматически обрабатывает механику скачивания и запуска приложения. В следующем примере кода показана HTML-страница, содержащая гиперссылку, которая указывает на XBAP.

<html>
    <head></head>
    <body>
        <a href="XbapEx.xbap">Click this link to launch the application</a>
    </body>
</html>

Вы также можете разместить XBAP в кадре веб-страницы. Создайте веб-страницу с одним или несколькими кадрами. Задайте исходное свойство кадра файлу манифеста развертывания. Если вы хотите использовать встроенный механизм для обмена данными между веб-страницей, на которой размещается приложение, и XBAP, необходимо разместить приложение во фрейме. В следующем примере кода показана HTML-страница с двумя кадрами, источник для второго кадра имеет значение XBAP.

<html>
    <head>
        <title>A page with frames</title>
    </head>
    <frameset cols="50%,50%">
        <frame src="introduction.htm">
        <frame src="XbapEx.xbap">
    </frameset>
</html>

Очистка кэшированных XBAP

В некоторых ситуациях после перестроения и запуска вашего XBAP, вы можете обнаружить, что открывается более ранняя версия XBAP. Например, это может произойти, если номер версии сборки XBAP является статическим, и вы запускаете XBAP из командной строки. В этом случае, поскольку номер версии кешированной и новой версии остается неизменным, новая версия XBAP не загружается. Вместо этого загружается кэшированная версия.

В этих ситуациях можно удалить кэшированную версию с помощью команды Mage (установленной с Visual Studio или пакетом SDK для Windows) в командной строке. Следующая команда очищает кэш приложения.

Mage.exe -cc

Эта команда гарантирует, что запущена последняя версия XBAP. При отладке приложения в Visual Studio следует запустить последнюю версию XBAP. Как правило, необходимо обновить номер версии развертывания с каждой сборкой. Дополнительные сведения о Mage см. в Mage.exe (средство создания и редактирования манифестов).

Взаимодействие с веб-страницей хоста

Когда приложение размещено в HTML-кадре, вы можете взаимодействовать с веб-страницей, содержащей XBAP. Вы делаете это, извлекая свойство HostScript из BrowserInteropHelper. Это свойство возвращает объект скрипта, представляющий окно HTML. Затем можно получить доступ к свойствам, методам и событиям объекта окна с помощью обычного синтаксиса точек. Вы также можете получить доступ к методам скрипта и глобальным переменным. В следующем примере показано, как получить объект скрипта и закрыть браузер.

private void Button_Click(object sender, RoutedEventArgs e)
{
    // Retrieve the script object. The XBAP must be hosted in a frame or
    // the HostScript object will be null.
    var scriptObject = BrowserInteropHelper.HostScript;

    // Call close to close the browser window.
    scriptObject.Close();
}
Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
    ' Retrieve the script object  The XBAP must be hosted in a frame or
    ' the HostScript object will be null.
    Dim scriptObject = BrowserInteropHelper.HostScript

    ' Call close to close the browser window.
    scriptObject.Close()
End Sub

Отладка XBAPs, использующих HostScript

Если XBAP использует объект HostScript для взаимодействия с окном HTML, необходимо указать два параметра для запуска и отладки приложения в Visual Studio. Приложение должно иметь доступ к своему сайту происхождения, и необходимо запустить приложение с HTML-страницы, содержащей XBAP. Ниже описано, как проверить эти два параметра:

  1. В Visual Studio откройте свойства проекта.

  2. На вкладке безопасности щелкните Advanced.

    Откроется диалоговое окно "Дополнительные параметры безопасности".

  3. Убедитесь, что установлен флажок Предоставить приложению доступ к его исходному сайту, а затем нажмите на кнопку ОК.

  4. На вкладке Отладка выберите параметр Запустить браузер с URL и укажите URL-адрес HTML-страницы, которая содержит XBAP.

  5. В Internet Explorer нажмите кнопку Сервис, а затем выберите Параметры интернета.

    Откроется диалоговое окно "Параметры браузера".

  6. Перейдите на вкладку "Дополнительные" .

  7. В списке настроек в разделе Безопасностьустановите флажок Разрешить запуск активного содержимого на файлах на моем компьютере.

  8. Нажмите кнопку ОК.

    Изменения вступают в силу после перезапуска Internet Explorer.

Осторожность

Включение активного содержимого в Internet Explorer может поставить компьютер под угрозу. Если вы не хотите изменять параметры безопасности Internet Explorer, можно запустить HTML-страницу с сервера и подключить отладчик Visual Studio к процессу.

Рекомендации по безопасности XBAP

XBAPs обычно выполняются в песочнице безопасности с частичным доверием, ограниченной разрешениями, присущими зоне Интернета. Следовательно, реализация должна поддерживать подмножество элементов WPF, поддерживаемых в зоне Интернета, или необходимо повысить разрешения приложения. Дополнительные сведения см. в разделе Безопасность.

При использовании элемента управления WebBrowser в вашем приложении, WPF внутренне создает экземпляр нативного элемента управления ActiveX WebBrowser. Если ваше приложение с частичным доверием XBAP, запущенное в Internet Explorer, элемент ActiveX работает в выделенном потоке процесса Internet Explorer. Поэтому применяются следующие ограничения:

  • Элемент управления WebBrowser должен обеспечить поведение, аналогичное браузеру узла, включая ограничения безопасности. Некоторые из этих ограничений безопасности можно контролировать с помощью параметров безопасности Internet Explorer. Дополнительные сведения см. в разделе Безопасность.

  • Исключение возникает при загрузке XBAP между доменами на HTML-странице.

  • Входные данные хранятся в отдельном потоке от WebBrowserWPF, поэтому ввод клавиатуры невозможно перехватить, а состояние IME не является общим.

  • Время или порядок навигации могут отличаться из-за элемента ActiveX, выполняющегося в другом потоке. Например, переход на страницу не всегда отменяется путем запуска другого запроса навигации.

  • Пользовательский элемент управления ActiveX может иметь проблемы с взаимодействием, так как приложение WPF работает в отдельном потоке.

  • MessageHook не вызывается, так как HwndHost не может подклассифицировать окно, работающее в другом потоке или процессе.

Создание Full-Trust XBAP

Если для XBAP требуется полное доверие, можно изменить проект, чтобы включить это разрешение. Ниже описано, как включить полное доверие.

  1. В Visual Studio откройте свойства проекта.

  2. На вкладке Безопасность выберите параметр Это приложение полного доверия.

Этот параметр вносит следующие изменения:

  • В файле проекта значение элемента <TargetZone> изменяется на Custom.

  • В манифесте приложения (app.manifest) атрибут Unrestricted="true" добавляется в элементPermissionSet.

    <PermissionSet class="System.Security.PermissionSet"
                   version="1"
                   ID="Custom"
                   SameSite="site"
                   Unrestricted="true" />
    

Развертывание Full-Trust XBAP

При развертывании XBAP с полным доверием, который не соответствует модели надежного развертывания ClickOnce, поведение, когда пользователь запускает приложение, будет зависеть от зоны безопасности. В некоторых случаях пользователь получит предупреждение при попытке установить его. Пользователь может продолжить или отменить установку. В следующей таблице описывается поведение приложения для каждой зоны безопасности и то, что необходимо сделать для приложения для получения полного доверия.

Зона безопасности Поведение Получение полного доверия
Локальный компьютер Автоматическое полное доверие Никаких действий не требуется.
Интрасети и доверенные сайты Запрос на полное доверие Подпишите XBAP сертификатом, чтобы пользователь видел источник в диалоговом окне.
Интернет Сбой с параметром "Доверие не предоставлено" Подпишите XBAP сертификатом.

Заметка

Поведение, описанное в предыдущей таблице, предназначено для XBAP, имеющих полный доступ, которые не используют модель доверенного развертывания ClickOnce.

Рекомендуется использовать модель доверенного развертывания ClickOnce для развертывания XBAP с полным доверием. Эта модель позволяет автоматически предоставлять XBAP полный доступ, независимо от зоны безопасности, чтобы пользователю не выводилось уведомление. В рамках этой модели вы должны подписать ваше приложение с помощью сертификата доверенного издателя. Дополнительные сведения см. в обзоре развертывания доверенных приложений и общие сведения о подписи кода.

Рекомендации по производительности времени запуска XBAP

Важным аспектом производительности XBAP является время начала работы. Если XBAP является первым приложением WPF, которое загружается, время холодного запуска может составлять десять секунд или более. Это связано с тем, что страница хода выполнения отрисовывается WPF, и среда CLR и WPF должны быть холодно запущены для отображения приложения.

Начиная с .NET Framework 3.5 с пакетом обновления 1 (SP1), время холодного запуска XBAP уменьшается за счет отображения неуправляемой страницы хода выполнения на ранней стадии процесса развертывания. Страница хода выполнения отображается почти сразу после запуска приложения, так как она отображается с использованием встроенного кода размещения и отрисовывается в HTML.

Кроме того, улучшенная параллельная обработка последовательности загрузки ClickOnce сокращает время старта до десяти процентов. После того как ClickOnce скачивает и проверяет манифесты, начинается загрузка приложения, и индикатор выполнения начинает обновляться.

См. также