Silverlight vs Flex

Моя компания разрабатывает несколько типов приложений. Большая часть нашего бизнеса связана с выполнением приложений мультимедийного типа, обычно выполняемых во Flash. Однако теперь эта сторона дома начинает мигрировать в сторону разработки Flex.

Большая часть нашей другой разработки выполняется с использованием .NET. Я пытаюсь сделать попытку сделать разработку Silverlight, так как для разработчиков .NET потребуется больше преимуществ для разработчиков. Я предпочитаю платформу Silverlight над платформой Flex для простого факта, что Silverlight - это все .NET-код. У нас больше разработчиков .NET, чем у разработчиков Flash/Flex, и большинство наших разработчиков Flash/Flex - графические художники (не настоящие программисты). Только причина, по которой они надавливают на Flex сейчас, состоит в том, что это похоже на логический шаг от Flash.

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

Итак, вот мой вопрос: если я собираюсь пойти на встречу, чтобы хвалить Silverlight, почему компания хочет пойти с Silverlight вместо Flex? Помимо очевидного "не у всех есть Silverlight", каковы плюсы и минусы для каждого?

Ответ 1

Думаю, вам следует взглянуть на Silverlight как на долгосрочную игру, как Microsoft, похоже, делает. Там очевидный баланс в том, когда использовать Silverlight против Flash, когда вы обеспокоены достижением и установкой базы, но вот некоторые причины, по которым Silverlight - хорошее направление для перемещения:

  • Преимущество второго коммутатора. Так же, как Microsoft построила "лучшую Java" с .NET, сегодня они могут посмотреть, как вы планируете плагин RIA с нуля. Они имеют то преимущество, что знают, как люди сегодня используют Интернет, чего изобретатели Flash никогда не могли точно догадаться. Flash может добавлять функции, но они не могут реалистично взломать платформу и начать все заново.

  • Знакомство с разработчиками. В то время как Silverlight - это новая модель, она не совсем незнакома разработчикам. Они "получат" то, как Silverlight работает намного быстрее, чем они поймут, готовясь к новой среде разработки с новым языком сценариев и парадигмами новых событий.

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

  • ScottGu - ScottGu запускается в Silverlight. Сказал Нафф.

  • Прохладные новые функции. В то время как Silverlight по-прежнему немного подкупает Flash с некоторыми очевидными функциями (такими как интеграция с веб-камерой/микрофоном или ускорение 3D/графики), в Silverlight есть несколько новых новых технологий, Одним из примеров является Deep Zoom. Я вижу больше "революционных" технологий на стороне Silverlight, в то время как Flash, похоже, находится в режиме обслуживания на данный момент.

Ответ 2

Здесь два вопроса: Silverlight vs. Flash как платформа и Silverlight vs. Flex как инфраструктура RIA.

Первый вопрос зависит от вашего таймфрейма. Flash Player имеет более 95% охвата, Silverlight не имеет никакого отношения к этому. Тем не менее, Silverlight может туда попасть, это все-таки поддерживается Microsoft. Если вы намереваетесь запустить сайт на следующей неделе и хотите огромную аудиторию, Silverlight не является вариантом. Если вы намерены запустить действительно классное приложение, которое каждый захочет использовать его немного по-другому, если ваше приложение достаточно хорошо, ваша целевая аудитория может установить Silverlight, чтобы иметь возможность запускать его.

Что касается второго вопроса, то вопрос о том, как легко разрабатывать приложения в Silverlight. Flex - это не просто набор виджетов, это очень большая структура, которая делает многое, что облегчает работу разработчика. Вы можете писать одни и те же приложения, используя только базовый Flash API, но это будет намного больше работать. В зависимости от того, что доступно в Silverlight, это должно быть важным фактором при принятии решения. Если вы можете сократить время разработки, стоит ли на нем двух платформ?

Ответ 3

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

Наборы навыков будут легче найти, если найти разработчиков С# или VB и найти гуру ActionScript. Однако есть компромисс:

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

В настоящее время инструменты разработчика Silverlight наполовину испечены и могут быть головной болью. Например, ошибки Blend при попытке визуализации любого xaml, содержащего IValueConverter, это проблематично. Я понятия не имею, что такое опыт разработчика Adobe, я уверен, что он такой же волосатый.

Итак, на этом этапе игры это сводится к человеческим ресурсам:

Если у вас есть опыт работы в .NET и немного вложенные в навыки проектирования, перейдите в Silverlight. Навыки/инструменты программирования будут передаваться. Если у вас есть опыт проектирования и набор навыков, обратитесь к Flex. Дизайнерские навыки/инструменты будут передаваться.

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

Перефразируя мнение Джона с другой точки зрения:

Я думаю, вы должны смотреть на Flex как на долгосрочную игру, так же, как это делает Adobe. Там очевидный баланс в том, когда использовать Silverlight против Flex, когда вы заинтересованы в достижении и установке базы, но здесь больше причин Flex является хорошим направлением для перемещения:

  • Преимущество второго двигателя - так же, как Adobe построила "лучший Java-апплет" с Flash, они могут смотреть на как вы планируете время выполнения царапины, сегодня. Они имеют преимущество знания людей в Интернете сегодня, что-то изобретатели существующего клиента платформ никогда не было точно догадался..NET может добавить функции, но они не могут реалистично взламывать платформу и начало.

  • Знакомство с дизайнером Flex/AIR - новая программная модель, это не совсем незнакомо дизайнеры. Они "пойдут" Flex работает намного быстрее, чем они поймут стрельбу по новой среда разработки с новой функцией плохие инструменты и новая анимация парадигм.

  • Избавление от цветовой модели RGB в Silverlight -.NET изначально построенный для окон, и он находится на ядро, как это работает. Flex отбросил давным-давно для проектно-ориентированного модель.

  • Все ваши инструменты работают на вашем Mac. Nuff сказал.

  • Прохладные функции - Silverlight все еще немного догоняет Вспышка некоторых очевидных функций (например, интеграция с веб-камерой/микрофоном или 3d/ графическое ускорение).

Ответ 4

Мы делаем как silverlight, так и flex, и вот точка зрения разработчика для обоих.

Плюсы Silverlight:

  • Сила С#, фрагменты кода, повторное использование существующих алгоритмов С#.
  • Сила других языков тоже, Generics и Linq и т.д.
  • Сила собственного выполнения CLR вместо Flash Action Script Интерпретатор
  • Одна интегрированная среда разработки Visual Studio для всех
  • Expression Blend действительно классный и более продвинутый редактор, а затем Flex Builder
  • XAML - это поисковая система.
  • Довольно приятные переходы состояния и их легко определить.
  • Threading and Asynchronous Tasks
  • Доступность, никто не знает, что Microsoft всегда делала лучшие функции доступа на всех своих продуктах, они всегда хорошо работали с людьми с ограниченными возможностями, сравнивая только браузеры, IE поддерживает полную доступность, а Safari/firefox и т.д. не ближе.

Против Silverlight:

  • Строго Microsoft Platform, я знаю, что многие люди будут спорить, но с текущим сценарием половина пользователей Intel Mac не могут заставить Silverlight 3.0 работать, все парни PPC Mac не могут использовать Silverlight 2.0 и Silverlight для Linux.
  • Существует моно, но официально не поддерживается Microsoft, он всегда будет отставать от обратной инженерии .NET и переносит его на другую платформу, но не из коробки.
  • Большинство компонентов/элементов управления являются "запечатанными", поэтому его трудно расширить и переопределить, чтобы легко создавать новые компоненты.
  • Архитектура Bad CustomControl/UserControl. Например. вы не можете иметь корень XAML как ComboBox или любой другой элемент управления и пусть он имеет как дизайн, так и код, вы можете создать настраиваемый элемент управления, но они слишком сложны.
  • Связывание требует именования компонентов и не поддерживает выражения экземпляра, такие как flex, хотя двусторонняя привязка хороша в silverlight, но вам нужно писать длинные коды для нескольких привязок для одного математического выражения.
e.g.
// this is possible in flex..
// but not in silverlight
<mx:TextBox id="firstName"/>
<mx:TextBox id="lastName"/>

// display full name..
<mx:Label text="{firstName.text} {lastName.text}"/>

Плюсы Flex:

  • Искренне независимая платформа, поддерживаемая на различных аппаратных и операционных системах и по-настоящему работающая повсеместно.
  • Open Source позволяет легко понять и расширить функциональность.
  • Каждый элемент управления/компонент может быть расширен и есть меньше ограничений, переопределяющих поведение по умолчанию.
  • Самый простой способ создания новых компонентов, вы можете получить mxml из любого элемента управления и расширить их с помощью обширной привязки
  • Flex содержит множество элементов управления, и вам не нужна сторонняя библиотека.

Минусы Flex:

  • Медленное выполнение для итеративных исполнений, без потоков! нет асинхронных задач!
  • Основываясь на пункте 1, нет отличной анимации или графики.
  • Нет дженериков, нет других языков, нет linq..
  • Класс номера имеет ошибку, не может хранить полное 64-битное значение
  • Eclipse плохо разрабатывает что-то отличное UI

Заключение

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

Ответ 5

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

Каковы ваши причины для нажатия Silverlight поверх Flex? Если вам нужно спросить сообщество SOFlow по причинам, кажется странным, что вы так захотите его нажать.

Ответ 6

Еще одно преимущество разработки Flex заключается в том, что вы можете переключиться на разработку настольных приложений (Adobe AIR) с тем же исходным кодом (и той же IDE) и распространять их из Интернета. Вы можете проверить это  для будущего платформы Flash.
Обновление Q3/2011: Flash 11 поддерживает низкоуровневое трехмерное ускорение, и уже есть много фреймворков и основных движков (Unreal Engine 3, Unity), поддерживающих его. Однако точкой продажи в будущем является то, что приложение AIR будет работать на платформах Windows, Mac, Android, Playbook и iOS (поддержка Linux была удалена). С абсолютным минимумом хлопот между портированием между ними (по крайней мере, когда у вас есть Adobe CS5.5 +).

Обновление Q2/2015: Silverlight официально мертв. Adobe AIR жив, но не процветает - это может быть полезно на основе ваших навыков и цепочки инструментов. Как Microsoft, так и Adobe признают, что HTML5 - это путь (будь то AIR или Apache Cordova или Visual Studio).

Обновление Q3/2017: Ха-ха, кто даже использует Flash больше.

Ответ 7

Не забыть:

Flex - это очень кросс-платформа, поскольку он компилируется с использованием Java-компиляции, что означает, что вы можете легко использовать Mac или Linux при разработке приложений Flex. У меня есть текущая настройка cruisecontrol (которая использует Linux). Я создаю сборки Flex-приложений, но разработчики используют как Mac, Linux, так и Windows.

По моему опыту, разработчики java чувствуют себя как дома в Flex Builder, поскольку он основан на Eclipse.

Ответ 8

Вы никогда не получите справедливое голосование по этому вопросу на SO, поскольку у него так много разработчиков Microsoft.

Кроме того, люди, вероятно, опросят этот ответ, который говорит, что все это действительно.

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

Чтобы ответить на комментарии ниже, я просто заметил, что, хотя есть много ответов, рекомендующих Flash/Flex, для Silverlight есть еще много голосов. Это не вопрос лжи, а просто одобрение того, с чем вы знакомы, не обязательно лучшая платформа.

Ответ 9

Программист Silverlight не знает, что им не хватает, когда дело доходит до Flex. В Silverlight отсутствуют модели компонентов и возможности запуска событий, которые Flex имеет. Используя XNA и С#, мой друг должен прыгать через все виды обручей, чтобы заставить его приложение Silverlight работать. Затем он должен быть передан дизайнеру, чтобы он выглядел наполовину приличным.

Слушайте подкасты deepfriedbytes.com на Silverlight, и вы услышите, как даже пара ребят, которые действительно подталкивают Silverlight, признают некоторые из этих проблем. (Я думаю, если я правильно помню, один из парней работает для Microsoft, но я мог ошибаться - я слушал его на прошлой неделе). Они согласны с тем, что Silverlight не совсем готов к любым огромным приложениям в текущем состоянии.

Я бы пошел с Flex, для чистого, чистого подхода, особенно если вы уже знакомы с Flash и ActionScript 3.0. Flex, по моему мнению, имеет гораздо больше смысла - Silverlight все еще должен созреть.

Ответ 10

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

Если вы развертываете в интернет-потребитель, Flash Player или AJAX - это путь. Если вы работаете в частной локальной сети для предприятия .net, у вас есть параметры.

Ответ 11

Дизайнер Asa, я использовал Flash (вкл. и выкл.) за последние несколько лет, а Silverlight (и его старший брат WPF) за последние 1,5 года. Основываясь на том, что я слышал от своей команды (все из которых являются разработчиками или бывшими разработчиками, если ваши разработчики .Net будут выполнять все программы, перейдите в Silverlight. Я люблю Flash, но даже с переходом OOP на ActionScript 3 в Flash 9 и выше, это все еще несколько причудливый язык, и переход между AS3 и С#, вероятно, приведет вас к гайкам разработчиков: -).

Для ваших дизайнеров сделайте следующее:

  • Получите им копию Expression Blend, инструмента разработки графического интерфейса для Silverlight/WPF.

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

  • Говоря об обучении, получите подписку на видео-библиотеку Lynda.com, особенно. Учебный курс Expression Blend Lee Brimelow.

  • Caveat emptor: Blend и WPF быстро меняются, поэтому иногда вы сталкиваетесь с ошибками в Blend, которые фиксируются в следующей бета-версии CTP Blend. Например. В Blend 2 произошла ошибка, из-за которой мои раскадровки (анимации) не работали в недавнем проекте. Я обновился до Blend 2.5CTP, и он сработал.

  • Содержимое Silverlight не всегда работает с последней бета-версией плагина Silverlight, что-то нужно иметь в виду, если вы тестируете новую функцию, доступную только в последнем плагине Silverlight.

  • Инвестируйте в мощную систему (Quad Core, 4Gigs RAM и т.д.) Blend потребляет много ресурсов, особенно. когда у вас есть тонны слоев. Например. Я работаю над приложением с более чем 100 уровнями (!) В базовом приложении (и еще 100+ в некоторых пользовательских элементах управления) и около 40-50 раскадровки. Каждые несколько минут мне приходится перезапускать Blend, потому что пользовательский интерфейс перестает отвечать (но не замораживает). Либо это, либо переместите все, что вы можете, в пользовательские элементы управления.

Ответ 12

Моя команда использовала для написания богатых веб-функций в Flex и теперь записывает их в Silverlight.

Наши причины для этого переключателя:

  • FlexBuilder построен на Eclipse. Eclipse ужасно! Бесплатно, но ошибка, сбой, сбой и медленность.
  • FlexBuilder в два раза превышает цену Expression Blend, которую мы бесплатно получаем с MSDN.
  • Flex - это боль для управления исходным кодом, ему не нравится делать файлы в одном месте, и он не играет хорошо с другими частями вашего решения (мы пытались использовать SourceGear Vault и SVN).
  • Версия Flex ActionScript не нравится большинству реализаций SOAP, в частности, у нее есть всевозможные проблемы с .Net WebMethod.
  • Несмотря на то, что мы периодически используем лицензированные компоненты Flex, он решает, что у нас нет этой версии и добавлены водяные знаки только для демонстрации. Единственный способ удалить это - взять проект на бит, переустановить Flex, переустановить лицензии и перестроить он.
  • FlexBuilder вообще не любит Vista.
  • Принятие Silverlight растет, как только он был на том уровне, где мы могли бы добавить его в качестве требования к соответствующим функциям, которые мы переключили. Если мы работаем в сети (а не в корпоративной) аудитории, я не уверен, что мы могли бы иметь.

Остальная часть нашего проекта -.Net и С#, вы можете обнаружить, что все эти проблемы менее значительны в магазине Java.

Ответ 13

Как Кибби намекнул выше, аргумент использования существующих разработчиков .Net не содержит много воды. Невозможно быть экспертом во всех аспектах развития .Net. Платформа слишком большая. То же самое касается Java. Единственное, что Silverlight делает для него с точки зрения навыков, это то, что вы можете кодировать свой любимый язык .Net. Это преимущество довольно мало, если вы уже делаете какую-либо значительную веб-разработку, которая использует JavaScript, поскольку Action script является вариантом. Так что действительно, чтобы преобразовать программиста в Flex или Silverlight, все об изучении API платформы.

Ответ 14

Мы прошли эту же проблему, и Flex победил. Сначала наши разработчики .NET были обеспокоены, но после долгой работы с Ajax и JavaScript они теперь любят и действительно любят работать в Flex.

Вот простой тест для вас., попробуйте найти как минимум 3 примера реальных приложений Silverlight (это не игры, видеоплееры или гаджеты). Затем сделайте то же самое для Flex.

Ответ 15

Я думаю, что Silverlight и XAML предпочтительнее ActionScript, и хотя я не знаком с ActionScript IDE, я знаком с VS2008 и Expression Web/Blend, и они очень хорошие среды разработки и все время улучшаются. Я бы пошел с Silverlight, и я думаю, что ключом к тому, чтобы заставить пользователей устанавливать плагин, является наличие хорошей страницы обнаружения подключаемого модуля, которая объясняет, что такое SL, и почему она в ней нуждается. Например, перейдите в http://memorabilia.hardrock.com/ и попробуйте отключить его плагин SL.

Ответ 16

Несмотря на то, что я работал с Silverlight, я очень рад возможности иметь приложения, живущие вне браузера, одно огромное преимущество AIR - это доступ к встроенной функции перетаскивания. Это позволяет создавать удобные для пользователя функции загрузки изображений или документов (например, загрузчик Flickr). Из того, что я слышал, MS пока не фокусируется на такой поддержке (т.е. Не объявлено о планах).

Ответ 17

Я использую это эмпирическое правило: если ваша компания разрабатывает интернет-мультимедийное программное обеспечение и имеет клиентов со всеми видами платформ, и вы не используете приложения с интенсивной базой данных Flex - это определенный ответ, если ваша компания разрабатывает как интернет, так и Продукты на основе DVD, менее интерактивные, но более интенсивные (CPU, Memory) и используют смехотворную транзакцию базы данных Silverlight имеет больше смысла

Ответ 18

Кто-то сказал: "Найдите 3 приложения для серебра реального мира". Хорошо, я знал, что кто-то с моей головы, но я все равно погубил. Список:

  • 2008 Олимпиада в Пекине (статистика здесь, 250 ТБ данных доставлено!)
  • Игрок по требованию Netflix
  • Клиент электронной почты AOL (возможно, еще не выпущен)

О, а не видеоплееры? Ну, это оставляет приложение UFC (это гибридное видео/чат/другое) и клиент электронной почты AOL. Silverlight выделяется на видео и там, где он набирает силу, но это не значит, что он не может делать другие вещи. Я не вижу причин отклонять его только потому, что он хорошо снимает видео.

Infoworld [link] сказал, что "Silverlight обладает значительными техническими достоинствами и относительно хорошей производительностью. Это очень способная технология RIA, которая особенно полезна в руки программистов с опытом .Net и дизайнерами с опытом XAML". Это хорошая статья для вас, чтобы прочитать о вашем вопросе.

Мой ответ: если у вас есть команда разработчиков, которая удобна с .NET, тогда Silverlight должен быть первым в вашем списке. Если нет, то это настоящий tossup. Я видел, что статьи говорят, что Visual Studio - превосходная платформа разработки по сравнению с тем, что вы используете с Flex. Но Flash проклят почти повсеместно.

Также имейте в виду, что Silverlight 2 почти не использует Javascript (я думаю, что нет, но я не уверен). Поэтому любое избегание Silverlight из-за JS необоснованно.

Если важна производительность, Silverlight выигрывает там. Я видел, что использование моего процессора в браузерах много раз увеличилось до 100%, и убить все, что работает в окне Flash, всегда удавалось избавиться от него. Это особенно заметно в Chrome, где вы можете увидеть процесс, который потребляет ваш процессор. Если вы заинтересованы в Silverlight для игрового потенциала, посмотрите QuakeLight, порт Silverlight от Quake. Это очень хорошо развивается.

Я действительно думаю, что дело доходит до того, где лежит талант разработчика и какое приложение вы будете доставлять. Простая игра? Вспышка. Линия бизнес-приложения? Silverlight. Между? Пойдите с тем, что рекомендуют ваши разработчики.

Ответ 19

Если вы знаете .NET, Silverlight 3.0 - это путь. Я использую его, и мне это нравится. Мне не нужно возиться с AJAX или JS BTW (я понятия не имею, о чем этот парень ссылался, возможно, SL 1.0). Для данных это в основном асинхронные вызовы WCF (LINQ to SQL за WCF) или файлы XML или службы RIA. Это позволяет использовать большинство шейдеров FX, имеет стили, управляющие шаблоны и собственный доступ к окну/буферу буфера обмена. Я могу запускать видео высокой четкости, и большинство процессов работают очень хорошо даже при медленных процессорах. Я также наслаждаюсь привязкой данных, привязкой к управлению и наблюдаемыми коллекциями, которые мне очень помогают. PLUS я могу использовать LINQ, большую экономию времени, не говоря уже об использовании Visual Studio для отладки с.

Я разрабатываю корпоративные .NET-приложения, поэтому я знаю свою базу установки, и они установят надстройку (обычно 30 секунд). Для веб-сайта переднего конца вы можете потерять некоторых пользователей, которые не хотят устанавливать Silverlight или не запускать Mac или Windows. У вас есть приложения с SL за пределами браузера с 3.0.

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

Ответ 20

Вы серьезно не должны использовать ЛЮБОЙ из этих технологий ActiveX2.0. Ни Silverlight, ни Flex...

Прежде всего, оба они не более чем "распределенные рамки winforms с поддержкой для запуска в браузере", во-вторых, они не хорошо переносят на другие устройства (особенно для Silverlight), в-третьих, они не Не работайте с другими частями вашей страницы. Они не работают хорошо для людей с ограниченными возможностями и т.д. И т.д. И т.д. Список продолжается в бесконечность...

Adobe и Microsoft оба пытаются скрыть этот факт очень тяжело, но в конце дня Silverlight и Flex - это не что иное, как ActiveX в новой упаковке...

Конечно, они работают в песочницах, управляются языками и все такое. Но это еще большая часть BLOB, загружаемая для локального запуска в вашем браузере, AKA ActiveX...

Ответ 21

Это старый вопрос, история уже говорила!

Silverlight так же хорош, как и Microsoft, он никогда не получал полезную базу установки. Партия из-за того, что Microsoft не совершает на нее 100%.

Flash (следовательно, Flex) все еще продолжается. Однако все больше и больше браузеров не поддерживают никаких плагинов, , так что это всего лишь вопрос времени (лет), прежде чем флеш станет способом Silverlight.

Возможно, однажды Flex будет перенаправлен на HTML5 без плагинов...

iPhone был озвучен, и он сказал, что единственным вариантом является "Яблоки" или HTML5.

Ответ 22

Flash Player доступен и поддерживается официально практически на всех настольных платформах (Windows, Linux, Mac), тогда как Silverlight будет поддерживаться в основном в Windows.

следующий article обеспечивает сравнение обеих платформ.