Подтвердить что ты не робот

Silverlight, веб-приложение Wpf (xbap) или нажмите один раз? За и против

Мы начинаем новый проект, и я пытаюсь решить, с какой из стратегий разработки/развертывания Wpf-esque мы должны идти. В нашем случае мы рассматриваем довольно сложное бизнес-приложение, которое будет использоваться 100-ю (не 1000) людьми, поэтому я склоняюсь к однократному приложению. Мой босс любит идею приложения Silverlight, так как это означает более простое развертывание. Каким образом мы должны прыгать?

Ответ, конечно, "это зависит". Итак, каковы плюсы и минусы каждого из них?

Я начну катить мяч (Изменить) Добавлено в некоторые ответы artur carvalho):


Silverlight

  • Pros

Кросс-браузер
Не требует полной структуры.
Улучшенный контроль над пользователями. Если вы входите в систему, вам не нужно беспокоиться о ключах активации или подобных материалах.
Он работает на Windows и Mac.
Вы можете легко обновлять все свои приложения.

  • Против

Невозможно взаимодействовать с клиентской файловой системой и т.д.
Имеет меньшую функциональность по сравнению с полным Wpf (у кого есть хороший ресурс, который документирует различия?)
Одно окно
Единая версия


Веб-приложение Wpf (xbap)

  • Pros

Полный Wpf.

  • Против

Одиночный браузер
Требуется полная структура
Невозможно взаимодействовать с клиентской файловой системой и т.д.
Одно окно
Единая версия


Wpf Щелкните один раз

  • Pros

Полный Wpf
Может работать в автономном режиме

Несколько окон
Несколько версий (con?)
Улучшенный доступ к низкоуровневым частям компьютера
Нет простоя для обслуживания

  • Против

Одиночный браузер
Требуется полная структура
Чуть (?) Сложнее установить.

4b9b3361

Ответ 1

Во-первых, я бы оценил, не может ли веб-клиент (в идеале MVC + jQuery) выполнять эту работу...

Предполагая, что полный клиент гарантирован:

Если это бизнес-приложение, которое требует клиента, я бы, как правило, имел полную структуру и ClickOnce; основное различие здесь (повторное развертывание) заключается в том, что клиент должен иметь установленную инфраструктуру, но, несмотря на это, развертывание ClickOnce очень безболезненно. Фактически, создание манифеста ClickOnce намного проще, чем Silverlight и т.д., Так как IDE будет делать почти все для вас; вам просто нужно разместить файлы где-нибудь (может быть веб-URL, может быть сетевой UNC).

Это дает вам больше контроля (и мощности) на клиенте, а также гораздо больший диапазон существующих ресурсов для использования (например, если вам нужно, вы можете использовать какой-то старый код winform на поверхности WPF). "Требуемые полные рамки" также являются одним из самых больших преимуществ: "имеет полную структуру".

Возможно, вам стоит рассмотреть и настройку 3.5 "профиля клиента"; не уверен, насколько широко распространено это на самом деле... но стоит знать.

Ответ 2

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

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

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

Если это интернет-приложение, перейдите в Silverlight: он работает под разными операционными системами.

Ответ 3

Профи

  • Подключаемый модуль Silverlight означает, что разработчики могут ориентироваться на единую согласованную среду выполнения для приложений на базе браузера, а не на сложность нескольких браузеров в разных версиях. Вы также получаете видео и мультимедийные эффекты, которые являются трудными или невозможными с использованием чистого HTML и JavaScript, хотя Adobe Systems Flash имеет те же преимущества.
  • Выполнить .NET-код без развертывания среды выполнения .NET. Плагин Silverlight включает в себя сокращенную среду выполнения .NET, но вместо того, чтобы иметь дело с большой загрузкой и сложностями установщика Windows, пользователь имеет небольшую загрузку около 4 МБ, которую обрабатывают в браузере. По моему опыту, установка плавная и простая.
  • Производительность многообещающая. Silverlight отлично справляется с этим калькулятором чисел, без сомнения, для компиляции JIT для собственного кода, хотя он может не так хорошо сравнивать графику.
  • Поддержка Moonlight означает, что будет реализована официальная реализация Silverlight с открытым исходным кодом, смягчающая запатентованный аспект.
  • Silverlight интерпретирует XAML напрямую, тогда как язык XML GUI Adobes, MXML, преобразуется в SWF во время компиляции. На самом деле, страницы XAML включены как ресурсы в скомпилированный .XAP-бинарный файл, используемый для развертывания приложений Silverlight. Файл .XAP - это просто ZIP с другим расширением. Это также означает, что поисковые системы могут индексировать текст в приложении Silverlight, как и в случае с Flash.
  • Сторонние поставщики компонентов уже хорошо работают с надстройками Silverlight. Например, Infragistics, ComponentOne и DevExpress.
  • Возьмите кросс-платформу .NET. С появлением повсюду Macs возможность миграции кода Visual Basic или С# на кросс-платформенный браузер Silverlight будет более полезна. Очевидно, это относится только к существующим разработчикам .NET - я думаю, это основной рынок для Silverlight, но он большой. То же самое относится к следующему пункту:
  • Использует Visual Studio. Microsoft IDE - зрелая и хорошо знакомая среда разработки, и поскольку она также является инструментом для ASP.NET, вы можете использовать ее для серверного кода, а также для клиента Silverlight. Для тех, кто не поддерживает Visual Studio, Silverlight SDK также поддерживает компиляцию в командной строке.
  • Выберите свой язык. Поддержка нескольких языков была частью .NET с самого начала, а наличие среды выполнения .NET в Silverlight 2.0 означает, что вы можете кодировать свою клиентскую логику на С#, Visual Basic или благодаря динамическому языку Runtime (DLR) Iron Ruby или Iron Python.
  • Изолированное хранилище предоставляет доступ к локальному файлу приложений Silverlight, но только в защищенном месте, специфичном для приложения, обеспечивая относительно безопасный способ получить эту выгоду.

Концы

  • Если Apple даже не разрешит Flash на iPhone, какой шанс для Silverlight?
  • Silverlight опаздывает к игре. Flash является зрелым, надежным и вездесущим. Silverlight 2 выходит из беты осенью (мы надеемся). Это версия, о которой мы заботимся - та, которая включает среду выполнения .NET, и по-прежнему не имеет поддержки на мобильных устройствах, даже Windows Mobile, хотя это обещано в какой-то неопределенной более поздней дате.
  • Инструментами проектирования являются Expression Blend и Expression Design, но кто их использует? Мир дизайна использует Adobe PhotoShop.
  • Несмотря на то, что совместимость решений между Expression Blend и Visual Studio хороша, на самом деле это проблема, связанная с использованием двух отдельных инструментов, особенно когда есть несовместимость, как в текущей бета-версии.
  • Нет поддержки популярного видеокодека H.264. Вместо этого hi-def видео для Silverlight должно быть в VC-1, что менее распространено.
  • Его еще одна попытка продвигать запатентованную технологию, а не открытые стандарты.
  • Да Linux будет поддерживаться через Moonlight, но когда? Похоже, что реализация Linux всегда будет отставать от выпусков Windows и Mac.
  • Silverlight поддерживает веб-службы SOAP или REST при условии, что вы не используете PUT или DELETE, но не имеете оптимизированного двоичного протокола, такого как Adobes ActionScript Message Format (AMF), что, вероятно, означает снижение производительности в некоторых сценариях.
  • Silverlight - это решение только для браузера, тогда как Flash можно развернуть для рабочего стола с помощью Adobe Integrated Runtime (AIR). Сказав это, да, я это видел.
  • Вам нужно разрабатывать Windows. Это особенно проблематично для инструментов дизайна Expression, поскольку дизайнеры имеют непропорционально большое количество компьютеров Mac.

Ответ 4

PROs и веб-формы ASP.NET

  • Нет ViewState или "сюрпризное дерьмо" o Это относится и к Silverlight. Silverlight приносит "рабочий стол" опыт конечному пользователю, и нет ViewState, который используется в Silverlight.
  • Быстрее на стороне сервера и на стороне клиента o Silverlight быстрее на стороне клиента/сервера в зависимости от того, как вы на это смотрите. Silverlight компилируется в подсистеме .NET Silverlight. У вас есть доступ к многопоточности, LINQ, сложным структурам данных и т.д. Производительность по сравнению с приложением ASP.NET или AJAX/JavaScript заключается в том, что времена умножения лучше из-за выполнения клиента и некоторых элементов, которые обычно обрабатываются на сервере BLL может быть сбит клиенту
  • Упрощенная модель для нескольких связанных видов o Silverlight поддерживает полное разделение данных и пользовательского интерфейса. Принимая это дальше, просто создавая отдельные представления, скажем, еще один потребитель Silverlight довольно мощный. Вы можете применить один и тот же шаблон MVC/MVP внутри Silverlight и достичь этого уровня абстракции. Джейсон упоминает пример создания отдельного представления для iPhone, и только компонент View должен измениться. Это относится и к Silverlight для разных вещей. Например, у меня есть приложение Silverlight большого размера, которое я хочу подключить к SharePoint. Я могу создать "Малый просмотр" для SharePoint, чтобы он лучше входил в пользовательский интерфейс. Кроме того, Silverlight Mobile сейчас подвергается частной проверке. Я бы предположил, что тот же самый мощный уровень абстракции также применим для создания "мобильного вида" для вашего приложения Silverlight.
  • Единичное тестирование o Silverlight также включает в себя структуру Unit Test. Его можно скачать здесь: http://code.msdn.microsoft.com/silverlightut/
  • Вызовы, если вы не используете IIS 7 o Silverlight не заботится, если вы не работаете в IIS 6 или IIS 7 или Apache. Это одна из особенностей, где Silverlight имеет преимущество перед ASP.NET MVC.
  • Кэширование клиентов o В ASP.NET Web Forms или MVC вы выполняете кеширование на сервере. Silverlight позволяет кэшировать клиента через изолированное хранилище (при необходимости его можно увеличить до сотен мегабайт). Это позволяет приложениям выполнять сверхбыстрые скорости, не забивая сервер хостинга.

CONs и веб-формы ASP.NET

  • Сложно преобразовать существующий код o Silverlight - это совершенно другая платформа программирования, чем ASP.NET WebForms или MVC. Мало того, что код не будет конвертирован, вам также необходимо подумать о клиентском уровне, и в большинстве случаев полная реструктура необходима, если вы заменяете большие модули внутри существующего сайта ASP.NET.
  • НЕ лучший SEO из коробки o Google несколько месяцев назад начал распространять SWF файлы и добавлять их в поисковую систему. Я думаю, что Silverlight, вероятно, все еще здесь. Что вы можете сделать для Silverlight SEO - это основные трюки, которые очень хорошо описывают теги метаданных вокруг плагина.
  • Доступ к данным o Доступ к данным в Silverlight ограничен веб-службами/службами данных WCF/ADO.NET. Вы не можете совершать прямые вызовы через ADO.NET или хранимые процедуры в базу данных.
  • Безопасность o Silverlight запускается на клиенте. Многие ваши биты затем роумируют в дикой природе в Интернете. Кроме того, некоторые из методов доступа к данным не поддерживают полную безопасность WS *. Поэтому, помимо безопасности на основе сертификата, вы либо пишете много своего собственного сантехнического кода, либо ожидаете следующего оборота. Код XAML довольно небезопасен; не многие приложения имеют свою Интеллектуальную собственность в своем интерфейсе. В Silverlight это может быть очень легко переделано с использованием Silverlight Spy. Silverlight, по своей природе, немного менее безопасен, чем приложение ASP.NET MVC. Очевидно, вы хотели бы зашифровать/обфускать свои сборки Silverlight, прежде чем отпустить их в дикую природу.

Ответ 5

1. Silverlight может получить доступ к DOM с страницы хостинга и
2. страница хостинга может получить доступ к части Silverlight.
Что большой + для Silverlight

Но все остальные ограничения плачут за WPF/Windows-Forms с помощью Clickonce
доступ к файлам, щелчок правой кнопкой мыши, простота доступа к db

Ответ 6

Вы можете добавить плюсы и минусы обычных материалов онлайн-обсуждения в оффлайне. Некоторые элементы:

Pros

МОФ (отсутствует):

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

Silverlight (онлайн):

  • Улучшен контроль над пользователями. Если ваши пользователи вошли в систему, вам не нужно беспокоиться о ключах активации или подобных материалах.
  • Он работает на Windows и Mac.
  • Вы можете легко обновить все приложения для пользователей.

Я немного упростил его, в списке есть серые области. Я только возился с XBAP, так что я оставлю это. "Минуты" не сложно понять, глядя на профессионалов.

НТН

Ответ 7

Я бы рассмотрел WPF ClickOnce с поддержкой поддержки синхронизации (www.msdn.com/sync). Это позволит вам поддерживать ограниченную функциональность, если пользователь не подключен к корпоративной сети (что устранит любые сценарии развертывания на основе браузера, такие как Silverlight и XBAP).

Ответ 8

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

Здесь я думаю, что он применяет принцип "меньше - больше": его правда, что с WPF у вас есть гораздо больше опций и вы можете получить доступ к пользовательскому компьютеру, но это может быть больше проблемой, чем помощь по мере продвижения. Подумайте, например, сколько изменений вам нужно будет изменить с Windows XP на Vista в приложении, которое использует множество ресурсов "пользовательского компьютера"!

Ответ 9

Марк, что вы имеете в виду, говоря "один браузер" для XBAP? Например, XBAP работает с Firefox. Это действительно требует .NET Framework, и вряд ли у нас скоро будет WPF в Mono (если когда-либо), так что вы застряли в Windows, это правильно.