Xbap как запустить в браузере

Обновлено: 07.07.2024

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

Этот раздел состоит из следующих подразделов.

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

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

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

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

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

При построении XBAP создаются следующие три файла:

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

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

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

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

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

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

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

Связь с веб-страницей размещения

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

Отладка XBAP, в котором используется HostScript

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

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

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

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

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

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

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

Откроется диалоговое окно «Свойства веб-обозревателя».

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

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

Нажмите OK.

Чтобы изменения вступили в силу, Internet Explorer необходимо перезапустить.

Включение активного содержимого в 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-странице в междоменном режиме, возникнет исключение.

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

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

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

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

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

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

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

При этом происходят следующие изменения:

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

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

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

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

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

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

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

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

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

WPF стирает границы между традиционными настольными и веб-приложениями. За счет использования страниц можно создавать WPF-приложения с возможностями навигации в веб-стиле. ХВАР позволяют выполнять WPF-приложения внутри окна браузера. С применением элемента управления Frame можно проделывать обратное, размещая HTML-страницу в окне WPF.

Однако при использовании элемента Frame для отображения HTML-содержимого все возможности по управлению содержимым утрачиваются. Не остается никакого способа для его инспектирования или для следования ему, когда пользователь переходит на новую страницу по щелчку на ссылке. И, конечно же, отсутствует возможность вызова методов JavaScript внутри HTML-страницы либо их обращения к коду WPF. Вот здесь как раз и приходит на помощь элемент управления WebBrowser.

Элемент управления Frame является прекрасным вариантом, когда необходим контейнер, способный гладко переключаться между содержимым WPF и HTML. Элемент управления WebBrowser более удобен, когда нужно изучать объектную модель страницы, ограничивать или следить за страничной навигацией или создавать путь, через который код JavaScript и код WPF могут взаимодействовать.

И WebBrowser, и Frame (с HTML-содержимым) отображают стандартное окно Internet Explorer. Это окно обладает всеми возможностями и средствами браузера Internet Explorer, включая поддержку JavaScript, Dynamic HTML, элементов управления ActiveX и подключаемых модулей. Однако дополнительных деталей вроде панели инструментов, адресной строки или строки информации о состоянии это окно не содержит (хотя все эти ингредиенты легко добавить к форме с использованием соответствующих элементов управления).

Элемент управления WebBrowser не был написан с нуля в виде управляемого кода. Подобно Frame (когда он отображает HTML-содержимое), он является оболочкой для СОМ-компонента shdocvw.dll, который представляет собой часть Internet Explorer и включен в Windows. Как следствие, WebBrowser и Frame имеют несколько графических ограничений, которые отсутствуют у остальных элементов управления WPF. Например, не допускается размещать другие элементы поверх HTML-содержимого, отображаемого в этих элементах управления, равно как применять трансформации для скашивания или поворота.

В качестве средства, способность WPF отображать HTML-содержимое (с помощью Frame или WebBrowser) даже близко не настолько же полезно, как страничная модель или ХВАР. Тем не менее, в особых ситуациях при наличии готового HTML-содержимого, которое не хотелось бы заменять, это средство может пригодиться. Например, элемент WebBrowser может использоваться для отображения внутри приложения HTML-документации или для предоставления возможности переходить к функциональности, предлагаемой на веб-сайте сторонних разработчиков.

Навигация к странице

Кроме свойства Source доступны также и методы навигации, которые перечислены ниже:

Navigate()

NavigateToString()

Загружает содержимое из переданной ему строки с полным HTML-содержимым веб-страницы. Это открывает интересные возможности, такие как извлечение HTML-текста из ресурса внутри приложения и его отображение

NavigateToStream()

Загружает содержимое из потока, который содержит HTML-документ. Это позволяет открывать файл и передавать его прямо в элемент управления WebBrowser для визуализации без удержания всего HTML-содержимого в памяти

GoBack() и GoForward()

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

Refresh()

Перезагружает текущий документ

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

Событие Navigating срабатывает при установке нового URL-адреса или при выполнении пользователем щелчка на ссылке. URL-адрес можно инспектировать и отменять навигацию, устанавливая е.Cancel в true.

Событие Navigated срабатывает после Navigating непосредственно перед тем, как в WebBrowser начинается загрузка страницы.

Событие LoadCompleted срабатывает после завершения процесса загрузки страницы и представляет собой удобную возможность для обработки полученной страницы.

Построение дерева DOM

Прежде чем можно будет использовать модель DOM с WebBrowser, необходимо добавить ссылку на библиотеку Microsoft HTML Object Library (mshtml.tlb). Поскольку она является библиотекой СОМ-объектов, в Visual Studio понадобится сгенерировать для нее соответствующую управляемую оболочку. Для этого нужно выбрать в меню Project (Проект) пункт Add Reference (Добавить ссылку), перейти на вкладку СОМ, выбрать опцию Microsoft HTML Object Library (Библиотека объектов HTML от Microsoft) и щелкнуть на кнопке ОК.

Стартовой точкой для исследования содержимого на веб-странице является свойство WebBrowser.Document. Оно дает объект HTMLDocument, который представляет одиночную веб-страницу в виде иерархической коллекции объектов IHTMLElement.

Для каждого имеющегося на веб-странице дескриптора предусмотрен отдельный объект IHTMLElement, включая параграфы (<р>), гиперссылки (<а), изображения (<img>) и прочие знакомые ингредиенты HTML-разметки.

Свойство WebBrowser.Document доступно только для чтения. Это означает, что связанный с ним объект HtmlDocument модифицировать можно, но создавать для него новый объект HtmlDocument "на лету" нельзя. Вместо этого понадобится либо установить свойство Source, либо вызывать метод Navigate() для загрузки новой страницы. После срабатывания события WebBrowser.LoadCompleted можно получать доступ к свойству Document.

Построение объекта HTMLDocument занимает небольшое, но все же заметное время (в зависимости от размеров и сложности веб-страницы). Элемент управления WebBrowser на самом деле не создает объект HTMLDocument для страницы до тех пор, пока не будет предпринята первая попытка доступа к свойству Document. Каждый объект IHTMLElement имеет описанные ниже ключевые свойства:

Свойство tagName содержит сам дескриптор без квадратных скобок. Например, дескриптор привязки имеет вид <а href = ". ">. </a>, поэтому его имя в tagName будет выглядеть как А.

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

Свойство children содержит коллекцию объектов IHTMLElement, по одному объекту для каждого имеющегося дескриптора.

Свойство innerHTML хранит полное содержимое дескриптора, включая любые вложенные в него дескрипторы вместе с их содержимым.

Свойство innerText хранит полное содержимое самого дескриптора и содержимое любых вложенных в него дескрипторов. Однако все HTML-дескрипторы отбрасываются.

Свойства outerHTML и outerText исполняют ту же роль, что и innerHTML и innerText, но включают текущий дескриптор (а не только его содержимое).

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

Значение свойства innerText для этого дескриптора будет выглядеть так:

Значение свойства innerHTML — так:

И, наконец, значение свойства outerHTML включает в себя полностью весь дескриптор:

Вдобавок с помощью метода IHTMLElement.getAttribute() можно извлечь значение атрибута для элемента по имени.

Для навигации по модели документа HTML-страницы нужно просто перемещаться по коллекции дочерних элементов каждого объекта IHTMLElement. В следующем коде эта задача выполняется в ответ на щелчок на кнопке. При этом создается дерево, отражающее структуру элементов и содержимого на странице:

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

Этот раздел состоит из следующих подразделов.

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

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

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

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

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

При построении XBAP создаются следующие три файла:

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

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

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

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

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

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

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

Связь с веб-страницей размещения

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

Отладка XBAP, в котором используется HostScript

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

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

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

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

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

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

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

Откроется диалоговое окно «Свойства веб-обозревателя».

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

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

Нажмите OK.

Чтобы изменения вступили в силу, Internet Explorer необходимо перезапустить.

Включение активного содержимого в 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-странице в междоменном режиме, возникнет исключение.

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

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

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

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

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

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

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

При этом происходят следующие изменения:

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

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

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

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

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

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

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

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

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

Описание: image456

1. Когда вы будете готовы к развертыванию, то первым шагом нужно выполнить сборку вашего приложения. При этом обычно нужно указать состояние сборки Release (для то­го, чтобы не включать без нужды отладочный код).

2. После сборки приложения вы должны увидеть несколько файлов вашего приложения в каталоге bin\release. Эти файлы представляют собой то, что вам надо развернуть. Однако вы не можете просто скопировать эти файлы на ваш Web-cepeep. Вам нужен файл развертывания. Для получения этого файла вам следует запустить в Visual Studio мастер Publish Wizard, доступ к которому вы можете получить через меню Build | Publish.

Первый шаг данного мастера — это указание каталога, в котором вы хотите опублико­вать свое приложение. Пока оставьте его как publishV При этом в вашем приложении бу­дет создан каталог и в него будут помещены все необходимые файлы. После этого вы можете скопировать его на ваш Web-cepeep. Следующий шаг этого мастера— указать, как пользователи будут инсталлировать приложение. Здесь важно указать From a Web Site. Пример показан на рис. 17.16. Последующие шаги для ХВАР-приложений не имеют значения; просто нажмите кнопку Next, а затем Finish.

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

• Publish.htm — это HTML-файл, который содержит гиперссылку для инсталляции ва­шего приложения. Вы можете использовать этот файл для тестирования публикации вашего приложения. Однако развертывать этот файл обычно не нужно. Пример файла показан на рис. 17.17.

Описание: image457

• ApplicationName.xbap— этот файл называется файлом манифеста ХВАР, причем здесь ApplicationName — это имя вашего проекта Visual Studio. Данный файл исполь­зуется для развертывания вашего ХВАР-приложения. Для ссылки на этот файл вы создаете Web-страницу (аналогичную publish.htm). После этого IIS передает его в ClickOnce для инсталляции приложения.

• Application F'i\es\ApplicationName_version\ApplicationName.dep\oy — это файл развер­тывания для ClickOnce. Этот файл содержит ваш ехе-файл.

• Application F\\es\ApplicationName_version\ApplicationName.mamfest— это файл мани­феста для вашего приложения, он содержит метаданные вашего приложения.

<а href="WpfBrowserWorkQueue.xbap">Launch the Work Tracking System</a>

5. Следующий шаг — убедиться, что IIS настроен правильно. Если у вас уже используется версия IIS 7, то ничего делать не надо. Однако если вы используете более старую версию IIS, то вам нужно зарегистрировать типы MIME в IIS (как показано в табл. 17.4). На рис. 17.18 представлен пример добавления типов MIME в IIS.

Описание: image458

Таблица 17.4. Требуемые для ХВАР типы MIME

Описание: image459

6. Следующая задача — убедиться, что вы создали Web-сайт для вашего приложения. Это можно сделать при помощи создания виртуального каталога в 1IS.

7. Конечно же, созданный вами на предыдущем шаге виртуальный каталог соответствует физическому каталогу (обычно это C:\inetpub\wwwroot\SVteM7we\). Вам нужно перейти обратно в каталог публикации, скопировать оттуда файлы и вставить их в физический каталог для виртуального каталога вашего Web-сайта. Вам нужно также вставить ваш HTML-файл (default.htm) в этот же самый каталог.

Нажатие гиперссылки в центре страницы приведет к инсталляции WPF-приложения в брау­зере пользователя (индикатор состояния процесса обеспечивается ClickOnce). На рис. 17.20 показано приложение, которое развернуто с этого URL и выполняется.

Читайте также: