Выбор между Ajax, Flex и Silverlight

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

Кто-нибудь из них предлагает лучшую межплатформенную совместимость, производительность, инструменты разработчика или поддержку сообщества?

Ответ 1

Вот краткое изложение каждой области (с множеством полезных ссылок):

Кросс-платформенная совместимость

Ajax работает в в любом современном браузере, который может запускать JavaScript. Для Flex требуется Flash или что-то еще, что может обрабатывать SWF, но после установки он общий фрирайд в отношении совместимости. Silverlight является сложным и непонятым, поэтому внимательно рассмотрите userbase прежде чем отправиться с этим MS набегом на богатые гонки приложений в Интернете. Также имейте в виду, что Silverlight по-прежнему находится в бета-версии, поэтому он может стать более широко используемым и установленным в будущем по мере его разработки.

Производительность

Я боюсь сделать слишком много заявлений о производительности, потому что это действительно зависит от того, насколько вы готовы оптимизировать и точную природу своего приложения. Кроме того, некоторые технологические стеки просто никогда не будут очень быстрыми. Некоторые люди там делают сравнения, но опять же, это зависит на множество факторов (даже версию браузера, с которой вы тестируете!). Вероятно, лучше всего выбирать на основе других факторов и оптимизировать, как только вы начали развиваться.

Инструменты разработчика

Существуют инструменты разработчика "золотой стандарт" для каждого из трех:

  • Ajax имеет в основном неограниченные возможности, в зависимости от остальной части вашей технологии и выбора архитектуры. Большие вопросы, с которыми вы столкнулись, - это те, на которые следует положиться библиотеки, и Google озвучил довольно хорошо принятый ответ с такими вещами, как Web Toolkit, Когда вы справляетесь с этим, это просто XML и JavaScript, правильно?

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

  • Microsoft позиционирует Microsoft Expression Blend версии 2.0 и 2.5 для разработки пользовательского интерфейса Silverlight 1.0 и 2 приложений соответственно. Visual Studio 2008 можно использовать для разработки и отладки приложений Silverlight (из Википедии).

Поддержка сообщества

Существует как официальная, так и неофициальная поддержка сообщества, корпорации и с открытым исходным кодом для всех трех вариантов. Какой бы вы ни были интегрированы и что заставляет вас чувствовать себя как дома, это очень индивидуальные вещи, но я предлагаю этот совет: придерживайтесь того, что вы знаете. Если вы являетесь разработчиком MS и имеете MSDN в качестве своей домашней страницы, вы, вероятно, подумаете, что документация Silverlight и форумы действительно полезны. Flex имеет очень похожую историю; форумы довольно хороши, и если вы уже являетесь флеш-лицом, вы будете дома, с их documentation и сообщество пользователей.

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

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

Ответ 2

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

Повсеместность

  • Ajax - поддерживается всеми современными браузерами на разных платформах.
  • Flex - Runtime (Flash Player) имеет очень широкую базу для Windows, Mac OS, Linux. Версия Linux была немного ошибкой в ​​последний раз, когда я проверил, хотя
  • Silverlight - Runtime имеет довольно низкую базовую базу (и без поддержки Linux) в настоящий момент

Выбор языка программирования

(Неисследованный из-за субъективности, но обратите внимание, что Silverlight предлагает самый лучший выбор. Также обратите внимание, что необходимо учитывать опыт существующих разработчиков в вашей команде.)

  • Silverlight: любой язык .NET(С#, Visual Basic, IronPython (?), IronRuby (?)) (и XAML для определения пользовательского интерфейса)
  • Ajax: JavaScript (и определение XHTML для определения пользовательского интерфейса)
  • Flex: ActionScript 3 (и MXML для определения пользовательского интерфейса)

API Стабильность и совместимость

  • Flex - время выполнения одинаково для платформ и браузеров, более зрелых и стабильных на данный момент, чем Silverlight
  • Silverlight - время выполнения одинаково для платформ и браузеров, менее зрелых, чем Flex/Flash, v2.0 все еще находится в бета-версии
  • Ajax - проблемы совместимости в браузерах (возможно, они могут быть уменьшены через библиотеки Ajax)

Интеграция с Web/браузером

  • Ajax - контент является встроенным в браузере, основанным на стандартах: доступен для поиска браузерами и поисковыми роботами, с учетом любых стандартных пользовательских интерфейсов, установленных браузером и операционной системой.
  • Flex и Silverlight - контент не является родным для браузера (т.е. работает в собственном маленьком "песочнице/прямоугольнике" ): не обязательно подчиняется установленным пользовательским интерфейсам для данной платформы.

Инструменты разработчика

  • Ajax - ваш любимый редактор кода, браузер и инструмент для отладки для браузера.
  • Flex - Flex SDK доступен для Windows, Mac OS и Linux бесплатно и может использоваться с вашим любимым редактором кода. Отладчик командной строки включен, но профилировщик, предоставляемый Adobe, доступен только в коммерческой среде Flex Builder IDE
  • Silverlight - AFAIK, SDK доступен для Windows бесплатно и может использоваться с вашими любимыми инструментами разработки .NET.

Ответ 3

Веб-среды, такие как Flex и Silverlight, все предлагают заманчивые вещи, но приходят с двумя большими затратами:

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

Даже почти повсеместная Flash не установлена ​​в каждом веб-браузере, поэтому, выбирая использование среды плагинов, вы исключаете часть своей аудитории.

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

Совместимость с кросс-платформой - это не проблема, которой она была раньше, поэтому проблема заключается в следующем: Получите ли вы больше возможностей в подключаемой библиотеке, чем потеряете в аудитории, которую вы исключаете?

Мой собственный ответ до сих пор всегда был JavaScript/Ajax, но я бы переоценил это в любом новом проекте.

Ответ 4

Какова ваша аудитория: общедоступный веб-сайт или бизнес-приложение для интрасети? Уровень усыновления не имеет значения, если у вас есть контролируемая аудитория, которая установит то, что необходимо для запуска вашего приложения. Однако, если вам нужна самая большая аудитория, чтобы сделать ваш веб-запуск успешным, тогда это может быть важно.

Какую цель вы ставите? Построение чего-то по самым низким ценам? Изучение новых технологий?

Можете ли вы использовать свои существующие навыки? Если вы уже знаете .NET, то Silverlight получает импульс. Learning Flex может быть интересным и полезным, но для вас он более полезен, чем больше опыта использования технологий .NET? Не забудьте рассмотреть альтернативную стоимость обучения чему-то совершенно новому.

На данный момент я не вижу явного победителя в технологиях, и, вероятно, долго не будет, поэтому выбор будет доведен до довольно субъективных факторов.

Ответ 5

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

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

  • JavaScript/HTML - нет встроенной поддержки чего-либо, кроме базовых раскрывающихся ящиков, кнопок и текстовых полей. Если вы хотите что-то вроде управления деревом или элемента управления вкладкой, вам придется сворачивать свои собственные или находить стороннюю библиотеку.

  • Adobe ActionScript - Встроенная поддержка широкого набора расширенных элементов интерфейса пользователя

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