Общие сведения о приложениях браузера WPF XAML

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

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

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

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

  • Взаимодействие с веб-страницей основного приложения

  • Соображения безопасности XBAP

  • Вопросы производительности запуска XBAP

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

Проще всего создать новый проект XBAP с помощью Microsoft Visual Studio 2010. При создании нового проекта выберите в списке шаблонов Приложение браузера WPF. Дополнительные сведения см. в разделе Практическое руководство. Создание нового проекта приложения обозревателя WPF.

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

ПримечаниеПримечание

При отсутствии опыта разработки в Microsoft Visual Studio или при делании изучить файлы проекта подробнее см. раздел Построение приложения WPF.

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

При построении XBAP выходной результат включает три файла, приведенные ниже.

Файл

Описание

Исполняемый файл (EXE-файл)

Он содержит скомпилированный код и имеет расширение .exe.

Манифест приложения (MANIFEST-файл)

Содержит метаданные, связанные с приложением, и имеет расширение .manifest.

Манифест развертывания (XBAP-файл)

Этот файл содержит сведения, которые ClickOnce использует для развертывания приложения, и имеет расширение XBAP.

XBAP разворачиваются на веб-сервере, например на Microsoft Internet Information Services (IIS) 5.0 и более поздних версий. Не нужно устанавливать .NET Framework на веб-сервере, но необходимо зарегистрировать типы Multipurpose Internet Mail Extensions (MIME) WPF и расширения имен файлов. Дополнительные сведения см. в разделе Практическое руководство. Настройка служб 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>A page with frames.</head>
    <frameset cols="50%,50%"> 
      <frame src="introduction.htm" > 
      <frame src="XbapEx.xbap" > 
  </frameset> 
</html>

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

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

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

Mage.exe -cc

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

Взаимодействие с веб-страницей основного приложения

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

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
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();
}

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

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

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

  2. На вкладке Безопасность нажмите Дополнительно.

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

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

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

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

    Появится диалоговое окно свойств обозревателя.

  6. Выберите вкладку Дополнительно.

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

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

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

Предупреждающее замечаниеВнимание

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

Соображения безопасности XBAP

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

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

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

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

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

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

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

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

Создание XBAP с полным доверием

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

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

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

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

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

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

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

Развертывание 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 загрузит и проверит манифесты, следует загрузка приложения, и индикатор выполнения начинает обновляться.

См. также

Основные понятия

Настройка Visual Studio для отладки приложения браузера XAML для вызова веб-службы

Развертывание приложений WPF