Браузерное приложение Wpf, что это такое

Обновлено: 07.07.2024

Браузерные приложения XAML (XBAP) сочетают в себе функции веб-приложений и многофункциональных клиентских приложений. Как и веб-приложения, XBAP можно развернуть на веб-сервере и запустить из Internet Explorer или Firefox. Как и многофункциональные клиентские приложения, XBAP могут использовать возможности WPF. Разработка XBAP также похожа на разработку для полнофункционального клиента. В этом разделе представлено простое общее введение в разработку 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 откройте свойства проекта.

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

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

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

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

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

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

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

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

Нажмите "ОК".

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

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

Вопросы безопасности XBAP

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

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

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

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

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

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

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

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

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

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

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

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

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

В файле проекта значение элемента изменено на Custom .

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

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

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

< td>Запрашивать полное доверие < td>Ошибка с сообщением «Доверие не предоставлено»
Зона безопасности Поведение Получение полного доверия
Локальный компьютер Автоматическое полное доверие Действий не требуется.
Интранет и надежные сайты Подписать XBAP сертификатом, чтобы пользователь увидел источник в запросе.
Интернет Подписать XBAP сертификатом.

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

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

Вопросы эффективности времени начала XBAP

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

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

Браузерные приложения WPF (или XAML-браузерные приложения, или XBAP ) — это приложения особого типа, которые компилируются в расширения .xbap и могут выполняться в Internet Explorer. В этом разделе объясняется, как можно профилировать приложения браузера WPF с помощью AQTime.

1. Подготовка браузерного приложения WPF

Чтобы AQTime мог профилировать ваше приложение WPF Browser, вы должны указать настройки компилятора:

Откройте браузерное приложение WPF в Visual Studio.

Щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите "Свойства" в контекстном меню. Это откроет свойства проекта для редактирования.

В редакторе свойств проекта активируйте вкладку Безопасность и выберите Это приложение с полным доверием:

Страница безопасности

Сохраните настройки и заново создайте приложение.

2. Подготовка проекта AQTime

Запустите AQTime и создайте новый пустой проект AQTime.

Выберите обычный режим профилирования на стандартной панели инструментов AQTime.

Выберите обычный режим профилирования на панели инструментов AQTime в Visual Studio.

Выберите обычный режим профилирования на панели инструментов AQTime Profiling Modes в RAD Studio.

Выберите «Выполнить» > «Параметры» в главном меню AQTime. Выберите AQTime > Параметры в главном меню Visual Studio. Выберите AQTime > Параметры в меню RAD Studio. Это вызовет диалоговое окно «Параметры запуска».

Укажите следующие значения в полях редактирования диалогового окна:

Укажите пользовательское хост-приложение: C:\Windows\System32\PresentationHost.exe
Параметры: -debug

Нажмите "ОК", чтобы сохранить изменения и закрыть диалоговое окно.

Переключитесь на панель настройки AQTime и добавьте исполняемый файл вашего приложения (.exe) в проект AQTime.

Теперь проект готов к профилированию. Теперь при необходимости вы можете создавать области и настраивать триггеры и действия.

3. Профилирование

Запустите профилирование в AQTime. AQTime запустит PresentationHost, который, в свою очередь, запустит ваше приложение.

Откройте проводник Windows, перейдите в папку, содержащую скомпилированную версию вашего приложения браузера WPF, и дважды щелкните приложение (файл .xbap). Это запустит приложение.

Выполните необходимые действия над приложением. AQTime профилирует это.

Чтобы получить результаты, либо закройте приложение, либо используйте команду "Получить результаты".

AQTime отобразит результаты профилирования на своих панелях.

В этом случае приложение .xbap будет запускаться автоматически при запуске профилирования.

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

WPF поставляется с готовым к использованию элементом управления WebBrowser, который позволяет разместить полноценный веб-браузер в вашем приложении. Элемент управления WebBrowser на самом деле представляет собой просто оболочку вокруг ActiveX-версии Internet Explorer, но, поскольку это интегрированная часть Windows, ваше приложение должно работать на всех компьютерах с Windows, не требуя установки дополнительных компонентов.

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


Итак, давайте посмотрим на код:

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

Давайте начнем с части XAML. Обратите внимание, что я использую несколько концепций, обсуждаемых в другом месте этого руководства, включая элемент управления ToolBar и команды WPF. Панель инструментов используется для размещения пары кнопок для перехода назад и вперед. После этого у нас есть адресная строка для ввода и отображения текущего URL-адреса, а также кнопка для перехода к введенному URL-адресу.

Под панелью инструментов находится собственно элемент управления WebBrowser.Как видите, для его использования требуется всего одна строка XAML — в этом случае мы подписываемся на событие Navigating, которое происходит, как только веб-браузер начинает переход по URL-адресу.

В отделенном коде мы начинаем с перехода к URL-адресу, уже находящемуся в конструкторе окна, чтобы иметь что-то для немедленного отображения вместо пустого элемента управления. Затем у нас есть событие txtUrl_KeyUp, в котором мы проверяем, нажал ли пользователь Enter внутри адресной строки — если да, мы начинаем переход по введенному URL-адресу.

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

Последняя часть кода программной части — это простая обработка наших команд: две для кнопок «назад» и «вперед», где мы используем CanGoBack и CanGoForward, чтобы решить, могут ли они выполняться, и методы GoBack и GoForward, чтобы выполнить фактические действия. работай. Это очень стандартно при работе с командами WPF, как описано в разделе команд этого руководства.

Для последней команды мы позволяем ей выполняться всегда, а когда это происходит, мы снова используем метод Navigate().

Обзор

Как видите, размещение и использование полноценного веб-браузера внутри вашего приложения становится очень простым благодаря элементу управления WebBrowser. Однако вы должны знать, что версия WebBrowser для WPF немного ограничена по сравнению с версией WinForms, но для базового использования и навигации она работает нормально.

Если вы хотите вместо этого использовать версию WinForms, вы можете сделать это с помощью WindowsFormsHost, как описано в другом месте этого руководства.

Вашего предпочтительного языка нет в списке? Нажмите здесь, чтобы помочь нам перевести эту статью на ваш язык!


Есть ли лучший способ?

Существуют ли какие-либо популярные веб-сайты, являющиеся браузерными приложениями WPF?

Стоит ли тратить время на браузерные приложения WPF или вместо этого следует изучить HTML и JavaScript?

У меня нет на примете каких-либо приложений, которые я хотел бы создать, это всего лишь общие вопросы о приложениях для браузера WPF.


о боже, уходите :-) Я видел всего несколько таких приложений, и они предназначались только для корпоративных интрасетей. И оба раза мне приходилось с ними сталкиваться, разработчики перед ними сваливали вину на разработчиков и оправдывались, что просто достались им по наследству.

Итак, чтобы ответить на ваш вопрос:

Практически все остальное. Помимо Adobe Flex

Определенно HTML и Javascript.

Я экспериментировал с несколькими прототипами. Не стал бы поддерживать его в долгосрочной перспективе, так как он устарел. Единственная реальная потребность заключалась в функциональности, которой не хватало Silverlight. Но сейчас Silverlight тоже умирает.

То есть только, подразумевает только Windows. Предполагая, что корпуса начинают работать с Win10, вы могли бы также рассмотреть «универсальное» приложение WinRT, если это ваше направление. Html, конечно, был бы вашим другим вариантом, но без более подробной информации о том, почему вы рассматривали xbap, это трудно посоветовать.

Есть несколько проектов, пытающихся внедрить xaml в браузер.

Ну, WPF является основой для Silverlight, так что, гм, видеоплеер Netflix (если вы не используете IE11 под Windows 8.1, который работает с html5)

Браузерные приложения WPF не поддерживаются за пределами IE. Даже тогда, я не думаю, что Microsoft больше его поддерживает. Он заброшен, как серебряный свет.

WPF -> Заменяет WinForms. Почему? Потому что WPF позволяет создавать приложения «Современный пользовательский интерфейс» / «Метро». А Winforms, хотя и хороша для прототипирования, устаревает.

MS изначально предназначалась для XAML для замены HTML. Эта лодка уплыла. Для Интернета используйте адаптивный подход HTML 5 + все классные детские фреймворки. НЕТ Java, Flash, Flex, Silverlight, ActiveX или чего-то подобного. Сохраняйте чистоту и адаптивность для всех устройств.

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

Для WPF веб-портирование не является примечательной особенностью. Они были достаточно умны, чтобы сделать так, чтобы это хорошо работало для настольных приложений, а все остальное — это белый шум.

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