Как запустить wpf приложение в браузере
Читаю книгу по WPF и не могу понять, зачем нужен WPF Browser Application. Круто конечно, что в браузере можно открыть Windows приложение. Но зачем?
Сделал простое тестовое приложение, выложил в IIS через ClickOnce, заставил его загружаться из IIS (при этом долго мучился с сертификатами). Запустил по ссылке. Но смысл всего произошедшего не понял. Как я понял, все приложение загрузилось локально и локально же запустилось. Но при чем тут браузер? Зачем?
Здравствуйте, Spiceman, Вы писали:
S>Читаю книгу по WPF и не могу понять, зачем нужен WPF Browser Application. Круто конечно, что в браузере можно открыть Windows приложение. Но зачем?
S>Сделал простое тестовое приложение, выложил в IIS через ClickOnce, заставил его загружаться из IIS (при этом долго мучился с сертификатами). Запустил по ссылке. Но смысл всего произошедшего не понял. Как я понял, все приложение загрузилось локально и локально же запустилось. Но при чем тут браузер? Зачем?
Смысл в том, что распространение приложения упрощается — достаточно пользователям дать ссылку для запуска.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.Здравствуйте, TK, Вы писали:
TK>Смысл в том, что распространение приложения упрощается — достаточно пользователям дать ссылку для запуска.
Так ведь то же самое можно было сделать с помощью ClickOnce и для обычных WindowsForms. То же ставил такой эксперимент — создал Windows приложение, выложил его в IIS с помощью ClickOnce, потом по ссылке приложение самостоятельно загрузилось и запустилось.
Здравствуйте, Spiceman, Вы писали:
S>Здравствуйте, TK, Вы писали:
TK>>Смысл в том, что распространение приложения упрощается — достаточно пользователям дать ссылку для запуска.
S>Так ведь то же самое можно было сделать с помощью ClickOnce и для обычных WindowsForms. То же ставил такой эксперимент — создал Windows приложение, выложил его в IIS с помощью ClickOnce, потом по ссылке приложение самостоятельно загрузилось и запустилось.
Ну а теперь то же самое для WPF Что не так?
У Мак-Дональда в книжке написано, что подобные приложения должны хоститься под браузером.
Это позволяет уменьшить риск от вредоносных программ, потому что, работая в браузере, она имеет ограниченные права.
Вроде так
Здравствуйте, MxKazan, Вы писали:
S>>Так ведь то же самое можно было сделать с помощью ClickOnce и для обычных WindowsForms. То же ставил такой эксперимент — создал Windows приложение, выложил его в IIS с помощью ClickOnce, потом по ссылке приложение самостоятельно загрузилось и запустилось.
MK>Ну а теперь то же самое для WPF Что не так?
Зачем браузер? Зачем нужен тип приложения WPF Browser Application?
MK>У Мак-Дональда в книжке написано, что подобные приложения должны хоститься под браузером.
MK>Это позволяет уменьшить риск от вредоносных программ, потому что, работая в браузере, она имеет ограниченные права.
MK>Вроде так
Зачем мне Windows приложение, работающее в браузере с ограниченными правами?
Все дело только в правах или есть еще что-то?
Здравствуйте, Spiceman, Вы писали:
S>Здравствуйте, MxKazan, Вы писали:
S>>>Так ведь то же самое можно было сделать с помощью ClickOnce и для обычных WindowsForms. То же ставил такой эксперимент — создал Windows приложение, выложил его в IIS с помощью ClickOnce, потом по ссылке приложение самостоятельно загрузилось и запустилось.
MK>>Ну а теперь то же самое для WPF Что не так?
S>Зачем браузер? Зачем нужен тип приложения WPF Browser Application?
Не тебе, а юзеру. Я же написал: чисто теоретически юзеру безопаснее работать с Browser Application.
Например, он заходит к тебе на сайт и запускает твою программулину. Если суть просто скачать и запустить, то, например, твоя программка спохонька сможет залезть в "Мои документы" и грохнуть весь музон. Если же твоё приложение хостится под браузером, то у нее не будет привилегий для доступа к файлам.
MK>>У Мак-Дональда в книжке написано, что подобные приложения должны хоститься под браузером.
MK>>Это позволяет уменьшить риск от вредоносных программ, потому что, работая в браузере, она имеет ограниченные права.
MK>>Вроде так
S>Зачем мне Windows приложение, работающее в браузере с ограниченными правами?
S>Все дело только в правах или есть еще что-то?
Возможно что-то еще. Я написал то, что запомнилось
Здравствуйте, MxKazan, Вы писали:
MK>Например, он заходит к тебе на сайт и запускает твою программулину. Если суть просто скачать и запустить, то, например, твоя программка спохонька сможет залезть в "Мои документы" и грохнуть весь музон. Если же твоё приложение хостится под браузером, то у нее не будет привилегий для доступа к файлам.
Если не доверяешь программе, зачем запускаешь? Любое Windows приложение, которое вы запускаете у себя на компьютере теоретически может оказаться вредосным ПО. А вдруг я запущу Photoshop, а он у меня файлы потрет. Но эта проблема решается — не доверяете программе, запускайте ее под юзером с ограниченными правами.
А вообще больше на паранойю похоже.
Все же думаю, должно быть какое-то еще преимущество Browser Application, кроме запуска с ограниченными правами.
Здравствуйте, MxKazan, Вы писали:
MK>Это позволяет уменьшить риск от вредоносных программ, потому что, работая в браузере, она имеет ограниченные права.
А можно пояснить ? У него ограниченные права в смысле Vista, где броузер выполняется с юзеровским привилегиями и поэтому не может писать в system32 и кое-куда еще или же в смысле броузера a la Java апплет, который не может вообще писать файлы на диск ?
Если первое — это не очень интересно, приложения и так в Vista не под админовскими привилегиями работают, если специально не сделать иначе.
А вот если второе — мне вообще не понятно. Исполняемый код, EXE, и вдруг без права писать на диск. А если все же попробует- не пройдет, несмотря на все разрешения Windows ? Java-то просто не умеет, а тут кто мне помешает напрямую вызвать из kernel32 что-нибудь ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Здравствуйте, MxKazan, Вы писали:
MK>>Это позволяет уменьшить риск от вредоносных программ, потому что, работая в браузере, она имеет ограниченные права.
PD>А вот если второе — мне вообще не понятно. Исполняемый код, EXE, и вдруг без права писать на диск. А если все же попробует- не пройдет, несмотря на все разрешения Windows ? Java-то просто не умеет, а тут кто мне помешает напрямую вызвать из kernel32 что-нибудь ?
Здравствуйте, Spiceman, Вы писали:
S>Здравствуйте, MxKazan, Вы писали:
MK>>Например, он заходит к тебе на сайт и запускает твою программулину. Если суть просто скачать и запустить, то, например, твоя программка спохонька сможет залезть в "Мои документы" и грохнуть весь музон. Если же твоё приложение хостится под браузером, то у нее не будет привилегий для доступа к файлам.
S>Если не доверяешь программе, зачем запускаешь? Любое Windows приложение, которое вы запускаете у себя на компьютере теоретически может оказаться вредосным ПО. А вдруг я запущу Photoshop, а он у меня файлы потрет. Но эта проблема решается — не доверяете программе, запускайте ее под юзером с ограниченными правами.
S>А вообще больше на паранойю похоже.
S>Все же думаю, должно быть какое-то еще преимущество Browser Application, кроме запуска с ограниченными правами.
На преимущества:
XAML browser applications (XBAPs) combines features of both Web applications and rich-client applications. Like Web applications, XBAPs can be published to a Web server and launched from Internet Explorer. Like rich-client applications, XBAPs can take advantage of the capabilities of WPF. Developing XBAPs is also similar to rich-client development. This topic provides a simple, high-level introduction to XBAP development and underscores where XBAP development is different than standard rich-client development.
Запустить прогу под ограниченным юзером — это, во-первых, неудобно, много возни, во-вторых, у этого юзера все-равно будут права доступа, например, к его же файлам.
Посмотрел и не проникся. Прошел по ссылками до
Windows Presentation Foundation Partial Trust Security
и там пример с файлами и всякими пермиссиями. Это, может, и хорошо, но все же могу я напрямую вызвать из kernel32.dll что-то, закрыт там PInivoke или нет ? Если закрыт — ясно. Если нет — на что мне все эти пермиссии ?
Классические ActiveX, хотя тоже в браузере выполняются, чихать на его защиту (я не о Висте говорю) и все его зоны хотели. Поэтому-то их и подписывают, поэтому им и не доверяют
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>и там пример с файлами и всякими пермиссиями. Это, может, и хорошо, но все же могу я напрямую вызвать из kernel32.dll что-то, закрыт там PInivoke или нет ? Если закрыт — ясно. Если нет — на что мне все эти пермиссии ?
Закрыт. код выполняется с набором полномочий "Internet zone permission set"
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.Здравствуйте, MxKazan, Вы писали:
MK>На преимущества:
MK>XAML browser applications (XBAPs) combines features of both Web applications and rich-client applications. Like Web applications, XBAPs can be published to a Web server and launched from Internet Explorer. Like rich-client applications, XBAPs can take advantage of the capabilities of WPF. Developing XBAPs is also similar to rich-client development. This topic provides a simple, high-level introduction to XBAP development and underscores where XBAP development is different than standard rich-client development.
Это вода. Тут написано, что можно легко распространять приложение через веб. Но запускается и выполняется оно все равно на клиенте. То есть, это не веб приложение, а настольное приложение, только выполняется в браузере.
Я так и не получил внятного ответа, зачем настольное приложение запускать в браузере. Был только один ответ, что таким образом оно исполняется с ограниченными правами. Это все или есть что-то еще?
Здравствуйте, MxKazan, Вы писали:
А здесь ничего не получается. Вот твоя ссылка
Здравствуйте, TK, Вы писали:
TK>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>и там пример с файлами и всякими пермиссиями. Это, может, и хорошо, но все же могу я напрямую вызвать из kernel32.dll что-то, закрыт там PInivoke или нет ? Если закрыт — ясно. Если нет — на что мне все эти пермиссии ?
TK>Закрыт. код выполняется с набором полномочий "Internet zone permission set"
Тогла такой вопрос. Могут ли эти приложения хоть при каких-то условиях писать на локальный диск ? Пусть для этого хоть юзер, хоть админ должны установить разрешения или политики, пусть не в system32, а куда юзер укажет, но могут или нет ?
Просто пока что я вижу две реальные крайности. Java и JavaScript, которые не могут, и ActiveX, которые все могут. Мне тут не раз доказывали. что web-приложения — это генеральное направление развития софта. Мне в это плохо верится до тех пор, пока эти приложения не научатся писать на локальный диск без угрозы его отформатировать
Здравствуйте, Pavel Dvorkin, Вы писали:PD>Просто пока что я вижу две реальные крайности. Java и JavaScript, которые не могут, и ActiveX, которые все могут. Мне тут не раз доказывали. что web-приложения — это генеральное направление развития софта. Мне в это плохо верится до тех пор, пока эти приложения не научатся писать на локальный диск без угрозы его отформатировать
Ну так уже. WebStart-приложения на Java могут писать с ограниченными правами (через файлы, полученные из диалогов или в персональную зону), JavaScript через Google Gears может сохранять данные на клиенте и т.п.
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Тогла такой вопрос. Могут ли эти приложения хоть при каких-то условиях писать на локальный диск ? Пусть для этого хоть юзер, хоть админ должны установить разрешения или политики, пусть не в system32, а куда юзер укажет, но могут или нет ?
Конечно могут. Если об этом явно скажут то, можно получить любые доступные права.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.Здравствуйте, TK, Вы писали:
TK>Конечно могут. Если об этом явно скажут то, можно получить любые доступные права.
Ну что же, это обнадеживает.
Здравствуйте, Cyberax, Вы писали:
C>Ну так уже. WebStart-приложения на Java могут писать с ограниченными правами (через файлы, полученные из диалогов или в персональную зону), JavaScript через Google Gears может сохранять данные на клиенте и т.п.
Я вообще-то имел в виду апплеты. Они тоже могут ? Сорри, но я в Явовских технологиях разбираюсь плохо.
— это приложения, которые выполняются внутри браузера. Они являются полноценными приложениями WPF, но имеют несколько основных отличий, описанных ниже:
ХВАР-приложения выполняются внутри окна браузера. Они могут занимать всю область изображения веб-страницы или размещаться где-то внутри обычного HTML-документа с помощью дескриптора <iframe>.
Формально WPF-приложение любого типа, включая приложение ХВАР, запускается в виде отдельного процесса, управляемого общеязыковой исполняющей средой (Common Language Runtime — CLR). Нам кажется, что приложение ХВАР выполняется "внутри" браузера просто потому, что оно отображает все свое содержимое в окне браузера. Это отличает его от модели, применяемой в элементах управления ActiveX (и приложениях Silverlight), которые на самом деле загружаются внутри процесса браузера.
ХВАР-приложения обычно имеют ограниченные разрешения. Хотя приложение ХВАР можно сконфигурировать так, чтобы оно запрашивало разрешение на полный доступ, цель состоит в том, чтобы использовать приложение ХВАР в качестве облегченной модели развертывания, которая позволяет пользователям выполнять WPF-приложения без риска со стороны потенциально небезопасного кода.
ХВАР-приложения не устанавливаются. При запуске приложения ХВАР оно загружается и помещается в кэш браузера. Однако в системе оно не устанавливается. Это обеспечивает веб-модель мгновенного обновления. Другими словами, при каждом возвращении пользователя к использованию данного приложения, происходит загрузка новейшей его версии, если она еще не находится в кэше.
Никакого приглашения выполнить установку и предупреждения, связанного с безопасностью, не появляется. Очевидно, что расплачиваться за это приходится следованием очень жестко ограниченной модели безопасности. Если приложению требуются большие возможности (например, чтение или запись произвольных файлов, взаимодействие с базой данных, работа с системным реестром Windows и т.д.), его лучше строить как автономное Windows-приложение, обеспечив упрощенным (хотя и не полностью бесшовным) процессом развертывания с помощью ClickOnce.
Требования для приложений ХВАР
Создание приложения ХВАР
Любое страничное приложение может стать приложением ХВАР, хотя Visual Studio для этого вынуждает создавать новый проект с помощью шаблона WPF Browser Application (Браузерное WPF-приложение). Разница кроется в четырех ключевых элементах в файле проекта .csproj:
Эти дескрипторы указывают WPF на то, что приложение должно обслуживаться в браузере (HostInBrowser), кэшироваться вместе с другими файлами Интернета без постоянной установки в системе (Install), использовать расширение .xbap (ApplicationExtension) и запрашивать разрешения только для зоны Интернета (TargetZone). Четвертый дескриптор является необязательным: как будет показано далее, формально допускается создание приложения ХВАР с большим количеством разрешений. Однако приложения ХВАР практически всегда выполняются с ограниченным набором разрешений, доступных в зоне Интернета, что является самым сложным аспектом для успешного программирования такого приложения.
Файл .csproj также включает и другие связанные с приложением ХВАР дескрипторы, которые гарантируют правильный процесс отладки. Самый простой способ изменить приложение ХВАР на страничное приложение с автономным окном (или наоборот) — это создать новый проект желаемого типа и затем импортировать все страницы из старого проекта.
Приложения браузера 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 скачивает и проверяет манифесты, запускается загрузка приложения и начинается обновление индикатора выполнения.
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.
• 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.
Таблица 17.4. Требуемые для ХВАР типы MIME
6. Следующая задача — убедиться, что вы создали Web-сайт для вашего приложения. Это можно сделать при помощи создания виртуального каталога в 1IS.
7. Конечно же, созданный вами на предыдущем шаге виртуальный каталог соответствует физическому каталогу (обычно это C:\inetpub\wwwroot\SVteM7we\). Вам нужно перейти обратно в каталог публикации, скопировать оттуда файлы и вставить их в физический каталог для виртуального каталога вашего Web-сайта. Вам нужно также вставить ваш HTML-файл (default.htm) в этот же самый каталог.
Нажатие гиперссылки в центре страницы приведет к инсталляции WPF-приложения в браузере пользователя (индикатор состояния процесса обеспечивается ClickOnce). На рис. 17.20 показано приложение, которое развернуто с этого URL и выполняется.
Microsoft Silverlight, который теперь поддерживается только в устаревшем Internet Explorer, полностью перестанет работать 12 октября, но появился проект с открытым исходным кодом под названием OpenSilver для преобразования проектов Silverlight в WebAssembly.
Silverlight — это плагин, разработанный Microsoft в том, что сейчас кажется альтернативной вселенной, когда казалось, что Adobe Flash может стать де-факто платформой для мультимедиа и сильным соперником для кроссплатформенных клиентских приложений.
Все изменилось в 2010 году, когда покойный генеральный директор Apple Стив Джобс опубликовал свои мысли о Flash (теперь, к сожалению, удален с веб-сайта Apple), подтверждающие, что Flash не будет поддерживаться в iOS. «В цели Adobe не входит помощь разработчикам в написании лучших приложений для iPhone, iPod и iPad. Их цель — помочь разработчикам в написании кроссплатформенных приложений», — написал он.
После удаления этой ключевой платформы фокус отрасли сместился на HTML 5 и JavaScript как для мультимедийных, так и для браузерных приложений. Позже в том же году Боб Маглиа из Microsoft, в то время президент подразделения Server and Tools, признал, что Silverlight тоже был неправильным направлением, заявив, что «наша стратегия изменилась». Последней основной версией была Silverlight 5.0 в декабре 2011 года.
Более 1000 человек не смогли победить ИИ в главной битве кроссвордовНо был период, когда Silverlight выглядел как направление движения Microsoft для кроссплатформенных и размещаемых в браузере приложений, и многие разработчики вкладывали в это усилия. Некоторые из них могут работать и сегодня, но если это так, время зовется.
«Поддержка Microsoft Silverlight прекратится 12 октября 2021 года», — заявили в компании. «Фреймворк разработки Silverlight в настоящее время поддерживается только в Internet Explorer 10 и Internet Explorer 11, а поддержка Internet Explorer 10 заканчивается 31 января 2020 года. Больше не поддерживается Chrome, Firefox или другие браузеры, использующие операционную систему Mac».
Приложения Silverlight могут продолжать работать, но программа установки больше не будет доступна. Определенные пользователи также должны отметить, что IE 11 перестанет поддерживать 15 июня 2022 года, хотя режим IE в Edge сохраняется.
Согласно документам: «Общий принцип миграции приложения Silverlight в OpenSilver состоит из создания проекта типа OpenSilver для каждого из исходных проектов Silverlight, затем копирования / вставки всех файлов из исходных проектов в проекты OpenSilver и, наконец, составление решения «.
Компания Userware, стоящая за OpenSilver, предупредила, что «ожидается много ошибок компиляции, поскольку OpenSilver в настоящее время поддерживает подмножество функций Silverlight». Также существует проблема со сторонними компонентами, такими как Telerik или DevExpress. Иногда эти компании предлагают примерно эквивалентный компонент HTML / JavaScript, и в этом случае код можно заменить.
Демонстрация OpenSilver включает примеры взаимодействия и элемент управления WebView.
OpenSilver обещает выпустить «полную версию» 12 октября, когда Silverlight перестанет поддерживать. Тем не менее, беглый взгляд на репозиторий позволяет предположить, что работа над ним продолжается, и ключевым вопросом является объем работающего подмножества Silverlight. В списке дел — новая система компоновки, поддержка Visual Basic, миграция для приложений WPF и даже поддержка Microsoft LightSwitch, злополучного, но когда-то многообещающего инструмента разработки из прошлого.
Существование OpenSilver демонстрирует, каким образом различные изменения направления Microsoft в своей платформе разработки привели к тому, что некоторые пользователи застряли с технологиями, у которых нет будущего — см. Другой пример в Visual Studio Tools for Office.
Читайте также: