Silverlight, Wpf Web App (xbap) или Click Once? Плюсы и минусы - PullRequest
37 голосов
/ 30 октября 2008

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

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

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


Silverlight

  • Плюсы

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

  • Минусы

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


Wpf Web App (xbap)

  • Плюсы

Полный Wpf.

  • Против

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


Wpf Нажмите один раз

  • Плюсы

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

  • Против

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

Ответы [ 10 ]

7 голосов
/ 30 октября 2008

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

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

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

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

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

3 голосов
/ 10 ноября 2008

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

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

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

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

1 голос
/ 23 апреля 2009

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

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

1 голос
/ 02 января 2009

PRO против ASP.NET Web Forms

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

CONs против ASP.NET Web Forms

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

плюсы

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

Минусы

  1. Если Apple даже не разрешит Flash на iPhone, какова вероятность Silverlight?
  2. Silverlight опоздал на игру. Флэш зрелый, пользующийся доверием и вездесущий. Silverlight 2 выходит из бета-версии только осенью (мы надеемся). Это версия, о которой мы заботимся - та, которая включает в себя среду выполнения .NET - и все еще не будет иметь поддержки на мобильных устройствах, даже на Windows Mobile, хотя это обещано в какой-то неуказанной позже.
  3. Инструменты дизайна: Expression Blend и Expression Design - но кто их использует? Мир дизайна использует Adobe PhotoShop.
  4. Хотя совместимость решений между Expression Blend и Visual Studio звучит неплохо, на самом деле приходится сталкиваться с необходимостью использовать два отдельных инструмента, особенно при наличии несовместимости, как в текущей бета-версии.
  5. Нет поддержки популярного видеокодека H.264. Вместо этого видео высокой четкости для Silverlight должно быть в VC-1, что является менее распространенным.
  6. Это еще одно усилие по продвижению запатентованной технологии, а не открытых стандартов.
  7. Да Лиnux будет поддерживаться через Moonlight, но когда? Вполне вероятно, что реализация Linux всегда будет отставать от выпусков Windows и Mac.
  8. Silverlight поддерживает веб-службы SOAP или REST при условии, что вы не используете PUT или DELETE, но не имеет оптимизированного двоичного протокола, такого как Adobe ActionScript Message Format (AMF), что, вероятно, означает снижение производительности в некоторых случаях.
  9. Silverlight - это решение только для браузера, в то время как Flash можно развернуть для настольного компьютера с помощью Adobe Integrated Runtime (AIR). Сказав это, да, я видел это.
  10. Вы должны разрабатывать в Windows. Это особенно проблема для инструментов проектирования Expression, поскольку у дизайнеров непропорционально большое количество компьютеров Mac.
0 голосов
/ 11 марта 2009

В наши дни не доступен ни один клик на Firefox через это дополнение: https://addons.mozilla.org/en-US/firefox/addon/1608

0 голосов
/ 09 декабря 2008

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

0 голосов
/ 01 декабря 2008

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

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

0 голосов
/ 03 ноября 2008

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

0 голосов
/ 31 октября 2008

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

Плюсы

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

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

Silverlight (онлайн):

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

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

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...