Общие сведения о приложениях браузера WPF XAML
XAML-приложения браузера (XBAP) объединяет возможности веб-приложений и многофункциональных клиентских приложений. Как веб-приложения, XBAP можно развертывать на веб-сервере и запускать из Internet Explorer или Firefox. Как многофункциональные клиентские приложения XBAP могут воспользоваться преимуществами возможностей WPF. Кроме того, XBAP разрабатываются аналогично многофункциональным клиентским приложениям. Этот раздел содержит простое, общее введение в разработку XBAP и показывает, чем она отличается от разработки стандартных многофункциональных клиентов.
В этом разделе содержатся следующие подразделы.
Создание приложения обозревателя XAML (XBAP)
Самый простой способ создать проект XBAP — с помощью Microsoft Visual Studio. При создании нового проекта выберите из списка шаблонов приложение браузера WPF. Дополнительные сведения см. в разделе Как Создание нового проекта приложения браузера WPF.
При запуске проект XBAP откроется в окне браузера, а не в отдельном окне. При отладке XBAP в Visual Studio, приложение запускается с разрешениями зоны Интернета и, следовательно, если эти разрешения будут превышены исключения безопасности. Дополнительные сведения см. в разделах Безопасность и Безопасность частичного доверия в WPF.
Note
Если вы не разрабатываете с помощью Visual Studio или желаете узнать больше о файлы проекта, см. в разделе построение приложения WPF.
Развертывание XBAP
При построении XBAP создаются следующие три файла:
Файл | Описание |
---|---|
Исполняемый файл (.EXE) | Содержит скомпилированный код и имеет расширение EXE. |
Манифест приложения (.MANIFEST) | Содержит метаданные, связанные с приложением, и имеет расширение MANIFEST. |
Манифест развертывания (.XBAP) | Этот файл содержит сведения, что ClickOnce использует для развертывания приложения и имеет расширение XBAP. |
XBAP развертывается на веб-сервере, например Службы Microsoft 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();
}
Отладка XBAP, в котором используется HostScript
Если XBAP использует HostScript объект для связи с окном HTML, существует два параметра, которые необходимо задать для запуска и отладки приложения в Visual Studio. Приложение должно иметь доступ к своему исходному сайту, а запустить его необходимо с HTML-страницы, которая содержит XBAP. Ниже описаны процедуры проверки двух этих параметров:
В Visual Studio откройте свойства проекта.
На вкладке Безопасность нажмите кнопку Дополнительно.
Откроется диалоговое окно "Дополнительные параметры безопасности".
Убедитесь, что флажок Предоставить приложению доступ к своему исходному сайту установлен, и нажмите кнопку ОК.
На вкладке Отладка выберите параметр Запустить браузер, используя URL-адрес и укажите URL-адрес HTML-страницы, содержащей XBAP.
В Internet Explorer нажмите кнопку Сервис и выберите Свойства обозревателя.
Откроется диалоговое окно «Свойства веб-обозревателя».
Откройте вкладку Дополнительно .
В списке Параметры в разделе Безопасность установите флажок Разрешать запуск активного содержимого файлов на моем компьютере.
Нажмите кнопку ОК.
Чтобы изменения вступили в силу, Internet Explorer необходимо перезапустить.
Caution
Включение активного содержимого в Internet Explorer может подвергнуть компьютер риску. Если вы не хотите изменить параметры безопасности Internet Explorer, можно запустить HTML-страницу с сервера и присоединение к процессу отладчик Visual Studio.
Вопросы безопасности XBAP
Обычно XBAP выполняются в изолированной среде безопасности частичного доверия, ограниченной набором разрешений зоны Интернета. Следовательно ваша реализация должна поддерживать подмножество элементов WPF, которые поддерживаются в зоне Интернета, или необходимо повысить уровень разрешений приложения. Дополнительные сведения см. в разделе Безопасность.
При использовании WebBrowser элемента управления в приложении WPF внутренним образом устанавливает собственный элемент управления WebBrowser ActiveX. Если ваше приложение — это XBAP частичного доверия, запущенный в браузере Internet Explorer, элемент управления ActiveX выполняется в выделенном потоке процесса Internet Explorer. В связи с этим применяются указанные ниже ограничения.
WebBrowser Элемент управления должен обеспечивать поведение, аналогичное браузеру узла, включая ограничения безопасности. Некоторыми из этих ограничений безопасности можно управлять с помощью параметров безопасности Internet Explorer. Дополнительные сведения см. в разделе Безопасность.
Если XBAP загружается на HTML-странице в междоменном режиме, возникнет исключение.
Входные данные поступают как отдельный поток из WPF WebBrowser, поэтому ввод с клавиатуры перехватить нельзя, а состояние IME не является общим.
Время или порядок навигации могут отличаться, если элемент управления ActiveX выполняется в другом потоке. Например, переход на какую-либо страницу не всегда отменяется при запуске другого запроса навигации.
Настраиваемый элемент управления ActiveX может испытывать проблемы со связью, поскольку приложение WPF выполняется в отдельном потоке.
MessageHook вызывается, поскольку HwndHost нельзя подкласс окно, выполняемое в другом потоке или процессе.
Создание XBAP с полным доверием
Если XBAP требует полного доверия, проект можно изменить, предоставив ему соответствующее разрешение. Чтобы предоставить полное доверие, необходимо выполнить указанные ниже действия.
В Visual Studio откройте свойства проекта.
На вкладке Безопасность выберите параметр Это приложение с полным доверием.
При этом происходят следующие изменения:
В файле проекта значение элемента
<TargetZone>
изменяется наCustom
.В манифесте приложения (app.manifest)
Unrestricted="true"
добавляется атрибут "PermissionSet элемент.<PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
Развертывание XBAP с полным доверием
При развертывании XBAP с полным доверием, не основанного на модели доверенного развертывания ClickOnce, действия, выполняемые после того, как пользователь запустит приложение, зависят от зоны безопасности. В некоторых случаях пользователь получит предупреждение при попытке установить приложение. Пользователь может выбрать продолжение или отмену установки. В следующей таблице описаны поведение приложения для каждой зоны безопасности и действия, необходимые для получения приложением полного доверия.
Зона безопасности | Поведение | Получение полного доверия |
---|---|---|
Локальный компьютер | Автоматическое получение полного доверия | Никаких действий не требуется. |
Интрасеть и надежные веб-сайты | Запрос полного доверия | Подпишите приложение XBAP с помощью сертификата, чтобы пользователь видел источник в запросе. |
Интернет | Сбой с сообщением "Доверие не оказано" | Подпишите приложение XBAP с помощью сертификата. |
Note
Поведение, описанное в предыдущей таблице, относится к приложениям XBAP с полным доверием, не следующим модели доверенного развертывания ClickOnce.
Для развертывания XBAP с полным доверием рекомендуется использовать модель доверенного развертывания ClickOnce. Она позволяет XBAP получать полное доверие автоматически, независимо от зоны безопасности и не запрашивая подтверждение пользователя. При использовании этой модели приложение должно быть подписано сертификатом надежного издателя. Дополнительные сведения см. в разделах Общие сведения о развертывании доверенных приложений и Знакомство с подписыванием кода.
Влияние времени запуска XBAP на производительность
Важную роль в производительности XBAP играет время его запуска. Если XBAP является первым загружаемым приложением WPF, время холодного запуска может составить от десяти секунд. Это связано с тем, что страницу хода выполнения обрабатывает WPF, а для того, чтобы отображать приложение, требуется холодный запуск CLR и WPF.
Начиная с версии .NET Framework 3.5 SP1, время холодного запуска XBAP уменьшается за счет того, что неуправляемая страница хода выполнения отображается на более раннем этапе цикла развертывания. Она открывается практически сразу после того, как приложение будет запущено, поскольку отображается машинным кодом размещения и выводится на экран в формате HTML.
Кроме того улучшенный параллелизм последовательности загрузки ClickOnce сокращает время запуска почти на десять процентов. После ClickOnce загрузит и проверит манифесты, запускается загрузка приложения и индикатор выполнения начинает обновляться.