Является ли этот список правильным пониманием текущих параметров развертывания приложений Microsoft?
Я пытаюсь разобраться со многими вариантами развертывания приложений, которые в настоящее время предлагает Microsoft.
Проведение небольшого исследования выявило десятки запутанных терминов:
- "WPF App"
- "ClickOnce App"
- "WPF ClickOnce App"
- "MSI App"
- "Приложение XBAP"
- "Приложение XBAP, развернутое с ClickOnce"
- "Установленное приложение ClickOnce"
- "WPF Web App"
- "ASP.NET Web App"
- "ASP.NET MVC Web App"
- "Silverlight App"
- "Полное приложение WPF"
- "ClickOnce с поддержкой инфраструктуры синхронизации"
Я очистил свои выводы в семь отдельных подходов ниже. Буду признателен за отзыв:
"Приложение WPF, развернутое с помощью MSI" (допускает множество вариантов установки)
- Требуется время выполнения MSI на целевом компьютере
- мастер с опциями
- можно указать для каждого пользователя или компьютера
- может изменять файлы и реестр на целевом компьютере, ограничивается только правами доступа, установленными администратором
- можно разместить ярлык на рабочем столе
- замена системных файлов и т. д. позволяет легко попасть в ад DLL на целевом компьютере
- обновление является серьезным недостатком: обнаружение доступных обновлений требует дополнительных инструментов / пользовательского программирования, а не встроенного
- пользователь не должен быть онлайн, чтобы использовать приложение
"Приложение WPF, развернутое с ClickOnce": (хорошо, если вы хотите автоматическое обновление, но запускается в песочнице)
- требуется два клика (нажмите гиперссылку, нажмите да), пользовательский ввод отсутствует
- только для текущего пользователя, без установки на машину
- нет ярлыков на рабочем столе
- появляется в списке программ как обычные приложения
- файлы приложений всегда копируются в../My Documents/My Applications
- ярлык для вашего приложения будет помещен в меню "Пуск" / название вашей компании
- не может изменить целевой компьютер, изолированный от операционной системы
- автоматически обнаруживает и обновляет более новую версию
- публикуется, просто помещая их на веб-сервер (где клиенты обнаруживают и получают их)
- требуется.NET 2.0 или более поздняя версия
- сравнимо с Java Web Start
- решает четыре проблемы: (1) простота развертывания, (2) простота обновления, (3) незначительное влияние на целевой компьютер, (4) отсутствие необходимости в правах администратора.
- считается "низким воздействием"
- если два пользователя имеют одно и то же приложение ClickOnce, установленное на одном компьютере, они не сломают друг друга
- использует CAS для безопасности
- пользователь не должен быть онлайн, чтобы использовать приложение
- автономные приложения ClickOnce теперь не работают на Firefox и Mac с Firefox, поскольку для них требуется среда выполнения.NET
- ограничено приложениями с одним окном, так как они запускаются в браузере
- создание манифеста ClickOnce намного проще, чем Silverlight и т. д., поскольку IDE сделает почти все за вас; Вам просто нужно где-то разместить файлы (это может быть веб-URL; может быть сетевой UNC).
"Приложение XBAP": xcopy развертывание файла.xbap, IE и Firefox мгновенно отображают его как веб-страницу
- настоящая цель модели XBAP - создание WPF-эквивалента традиционному веб-сайту HTML-и-JavaScript (или апплету Flash)
- целевой компьютер просто запускает приложение без установки через Интернет в своем веб-браузере (IE или Firefox)
- Они хороши для приложений интрасети, где требуется действительно простое развертывание, полная.NET Framework (в отличие от Silverlight) и навигационная модель браузера.
- 99% функций WPF (в отличие от подмножества функций Silverlight WPF)
- МОЖЕТ также автоматически развертываться через ClickOnce, но XCOPY является более распространенным
- YourApp.xbap действительно является манифестом развертывания ClickOnce
- бежать в песочнице
- пользователь должен быть онлайн, чтобы использовать приложение
- это должны быть приложения на основе страниц, а не приложения на основе окон
- "Похоже, что XBAP запускается внутри brwoser просто потому, что отображает весь его контент в окне браузера. Это отличается от модели, используемой элементами управления ActiveX (и Silverlight), которые загружаются внутри процесса браузера".
- XBAPs предлагает "быстрый запрос", если установлен.NET 3.5, он просто отображается в браузере, как веб-страница.
- XBAP не разрешается использовать элементы управления WinForm через Interop
- не разрешать использовать окна перетаскивания
- большинство расширенных функций WCF НЕ допускаются, и XBAP не может связываться ни с одним сервером, кроме того, на котором размещен XBAP.
- "если вашему приложению требуется полное доверие, вам следует подумать о создании автономного приложения WPF и его развертывании с помощью ClickOnce" ( Pro WPF в C# 2008)
- хитрость: вы можете встроить несколько приложений xbap в несколько фреймов на одной HTML-странице.
"Приложение Silverlight": запускается в браузере клиента и использует загруженное подмножество платформы.NET Framework размером 4 МБ, то есть без 3D)
- кросс-браузер (приложения могут также использоваться Opera и Safari)
- обновить приложение так же просто, как с ClickOnce или XBAP
- однооконные приложения
- Приложение находится в песочнице, конечно
- только асинхронный
"ASP.NET MVC с JQuery/AJAX": новая платформа разработки, равная разработке в WPF с точки зрения RAD и TDD
- этот подход стоит рассмотреть вместе с подходами WPF/Silverlight
"ASP.NET App": классическое веб-приложение с ViewState и т. Д., Вероятно, будет использоваться все реже, так как ASP.NET MVC получает признание
"WinForm App": классическое приложение для Windows, будет использоваться все реже, так как WPF получает признание
Я был бы особенно признателен за отзывы о:
- насколько многократно используются элементы управления (например, если мы разрабатываем в Silverlight, можем ли мы повторно использовать наш код / элементы управления в XBAP?)
- Каков наилучший подход к клиентам, которые иногда находятся в автономном режиме, иногда в сети и нуждаются в доступе к WCF (вероятно, я думаю, что приложения clickOnce)
6 ответов
Опыт AppStart:
MSI = только Windows. Много кликов. Установите перед использованием. Подходит для очень больших и ресурсоемких приложений. Приложение может распространяться на DVD. Приложение может сделать все. Нет технологических ограничений.
ClickOnce = Только Windows. Может быть активирован с веб-страницы. Загружается один раз. Сохраняет информацию о своем происхождении (сервере) и может автоматически обновляться. Приложение ограничено. Требуется.NET
Silverlight = Работает на Windows/Max/Linux(скоро) и будущих мобильных телефонах (планируется). Является ли веб-страница или может быть встроена в HTML. Код находится на сервере и никогда не будет установлен. Требуется Silverligth-Runtime. Предоставляет подмножество WPF
XBAP = Как Silverlight, но только для окон. Это никому не понадобится. Silverlight лучше
Технология программирования:
Silverlight = Работает на клиентском компьютере. Использует WPF *
ASP.NET = Работает на сервере в.NET, но Javascript/ HTML на клиентском компьютере.
WinForms = старая технология
WCF = не будет работать для приложений на основе браузера. Для распределенных приложений. Можно открыть все двери в клиентскую машину. Использование WCF = требует MSI.
WCF предоставляет хорошую основу для сервера. Вам никогда не понадобится WCF на клиенте, когда вы используете REST для взаимодействия. Клиент может быть подключен / отключен в приложениях ClickOnce и MSI. Вы должны подключиться к веб-странице для appstart в Silverlight и ASP.
XAML можно использовать повторно для silverlight/wpf/xbap. Незначительные изменения в wpf/silverlight. Никаких изменений в wpf / xbap как я знаю.
Отличное резюме, Эдвард.
Большая часть кода в Silverlight может напрямую использоваться в приложениях WPF и WPF XBAP, поскольку Silverlight является подмножеством WPF. Для XAML вам придется изменить URI пространства имен и, возможно, придется немного подправить вручную.
Для преобразований XAML в Silverlight вам также потребуется изменить URI пространства имен, но может потребоваться рефакторинг, если используются элементы WPF, которых нет в Silverlight. WPF и Sync Framework - отличные возможности для онлайн / офлайн приложений. Посмотрите Syndicated Client Experience Starter Kit для примера приложения WPF/Sync Framework. Также Silverlight + Windows Live Mesh обеспечит возможности онлайн / офлайн.
Я бы не поспешил отклонить XBAP как "Silverlight для Windows". Поскольку он использует полный набор WPF, можно использовать одну и ту же кодовую базу как для приложения WPF, так и для XBAP, если вы работаете в рамках ограничений частичного доверия, наложенных на XBAP.
Кроме того, начиная с.NET 3.5, WCF работает в XBAP с частичным доверием. Вы не можете сделать так много, как в приложении WPF с полным доверием, но это все еще полезно.
Варианты развертывания, поддерживаемые MS для клиентских приложений:
Clickonce не является специфичным для WPF.
XBAPS - это развернутые в браузере приложения WPF, размещенные в браузере, в надежной изолированной программной среде безопасности. Приложения WinForms могут быть развернуты по клику и размещены в браузере.
Silverlight (в основном) совместим с исходным кодом WPF. Вы можете перекомпилировать элементы управления SL как элементы управления WPF.
Clickonce, размещенный не в браузере, вероятно, подойдет вам.
Вы перечислили "MSI App". Установщик Windows - это технология Microsoft для установки и обновления программ в Windows. Созданные установочные пакеты имеют расширение ".msi". (Изначально он назывался "Установщик Microsoft". Они изменили его на "Установщик Windows", но сохранили расширение.) Он определяет стандартный способ создания установочных пакетов. Пакеты могут быть созданы различными инструментами (InstallShield, WiX, Visual Studio и т. Д.). Это не ограничивается приложениями WPF. Вы можете использовать его для установки практически любого приложения.
Еще одним вариантом развертывания, предоставляемым Live Framework (Live Mesh vNext), является веб-приложение с поддержкой Mesh (MEWA). Это позволяет упаковать приложения Silverlight, DHTML и Flash для запуска в режиме онлайн на Live Desktop или в режиме онлайн / офлайн на рабочем столе Windows. Вы можете установить MEWA в вашу Mesh и автоматически развернуть его на всех устройствах вашей Mesh. Если выпущена новая версия приложения, обновление также можно синхронизировать со всеми устройствами.
Есть подсказки, что в дополнение к Silverlight/DHTML/Flash будущие версии Live Framework будут поддерживать упакованные приложения MSI и CAB, предположительно с аналогичными функциями развертывания.
Документация для веб-приложений с поддержкой Mesh: http://msdn.microsoft.com/en-us/library/dd199554.aspx