To Flex or not to Flex

Posted by on September 22, 2008

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

Быстро рассмотрим типы приложений, что бы составить план обзора и поиска благоприятной почвы для старта разработки на Flex. По-видимому, все интересующие нас приложения уже можно разделить на вебтопные и десктопные. Веб-приложения могут быть обычными или RIA, и каждые из них могут иметь как front-end — собственно внешний сайт, так и back-end — админку. Не забудем так же и о том, что они могут быть как internet — для обычных обывателей сети, так и intranet — для корпоративных пользователей. С помощью механизма Adobe AIR, Flex стал доступен и на десктопе, но там его использование подчинено сходным требованиям как и в вебе.

Веб-приложения, которые не RIA

Flex практически никогда не нужен при разработке классических сайтов. Классическими я называю: домашние странички, сайты-визитки, новостные сервисы, форумы, блоги, порталы, социальные сети и т.п. Все, кто пытался реализовать их не на связке HTML+JS, в результате получал негибкую, тяжелую поделку, которая плохо индексируется, плохо рендерит текст, не поддерживает стандартную взаимосвязь с броузером и т.п.

Я участвовал в разработке подобного проекта в компании Sonopia. Мы разрабатывали социальную сеть на Flex, которую изначально, под впечатлением тезисов RIA, руководство хотело позиционировать как насыщеную медиа контентом и прочими ультра-штучками. В результате мы получили набор стандартных сервисов: Dashboard, Profile, Photos, Guestbook, которые выглядели как минимум нелепо. В гостевой книге пользователи не могли вставлять теги форматирования текста и ссылки на фотки или флеш виджеты. Перемещение по разделам нормально не синхронизировалось с кнопкой «Back» в броузере. Выполняя минимальный функционал приложение весило 1,5 Мб. В какой-то момент, все заметили что скорость разработки того, что должно быть не Flex, где-то в два раза дольше чем на HTML и большую часть проекта дописывали уже используя стандартные технологии. В результате нам добавилось проблем с синхронизацией обоих частей проекта. Затем команду Flex разработчиков расформировали, а чуть позже старт-ап провалился.

Ещё один пример — портал top4top.ru, пусть он и писался, предусмотрительно, на чистом Action Script, тем не менее это хрестоматийный пример неправильного позиционирования технологии (не говоря уже об общей идейной направленности).

Для персонального интереса, во время изучения Flex, я сделал на нём пару стандартных сайтов для группы Etwas Unders (есть описание) и для студии JMAK. Так как количество разделов и контента было не велико, то они выглядели сносно. Хотя многие посетители недоумевали, зачем там вообще Flex? Согласен — ни к чему. Единственный выигрыш — отсутствие проблем с версткой под основные броузеры (не отрицаю, что для кого-то это будет ключевой бонус).

Не так давно попалась ссылка на сайт http://xoalt.com/, интернет-каталог товаров. Подобные проекты, как и интернет магазины или просто справочники чего-либо вообще запрещено разрабатывать на Flex. Самый главный критерий таких проектов — это высокая доступность поисковым машинам, с чем Flex, как и все флеш-приложения традиционно слабы.

Разработка админок, которые в последнее время часто делают на Flex, так же под вопросом. Если нужна гибкая работа с текстом — будут проблемы, если же вывод табличных данных с необходимостью редактирования, то Flex с AdvancedDataGrid компонентом может помочь быстро справиться с заданием. Drag-n-drop возможен и на JS, но, не спорю, на Flex это можно сделать быстрее и проще.

RIA

Как это ни странно, Flex рулит далеко не всегда и в этом лагере тоже. Иногда кажется, что в общем случае флеш плэер используется только для проигрования видео и музыки. Но, скоро ожидается повсемесное использование HTML 5 с поддержкой данных штучек, что же, получается Flex так и не найдёт свою стабильную нишу и всегда будет только альтернативой? К счастью не всё так, и есть ряд критериев, при которых Flex просто необходим. Я опишу приблизительные тексты технического задания при котором можно смело выбирать Flex:

«Нужно разработать большую кросс-браузерную веб-систему, по мониторингу/управлению/статистике определённых процессов определённого предприятия или продукта. В системе ожидается много иерархических или табличных данных которые нужно сортировать, групировать и редактировать. Нужно запрограммировать более десятка разнообразных форм ввода и изменения данных. Код должен реализовывать практики ООП и быть самодокументированным так как проект долгий и текучка кадров неизбежна.»

«Нам нужна on-line система по обработке видеосигналов с нескольких источников, а так же соотвествующий UI по базовому редактированию и сохранению контента на сервер.»

Можно придумать ещё несколько подобных условий задач, но их будет объединять общий схожий мотив, который и есть ключевым коньком Flex. 

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

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

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

Думаю, коментарии, почему в данном случае выбран именно Flex излишни. По-сути, вся данная статья — один большой коментарий вызванный данным проектом.

В заключении можно всё резюмировать банальными фразами. Ваша цель как программиста взвесить многие факторы будущего приложения и основываясь на них не выбрать (чаще всего) или выбрать Flex. Если же вас принимают на вакансию Flex программиста в проект, где его роль сомнительна или абсурдна, подумайте обстоятельно, что бы исскуственно не стать «слабым звеном» в глазах нахальных жавистов или гордых сишарпщиков — сотрудников по проекту (и такое на моём опыте бывало).

Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

  1. ilja.panin Sep 22, 2008 13:21

    “Веб-приложения, которые не RIA”

    Слишком уж ужал область для флекса/флеша :)

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

    В принципе это свойствено всем технологиям)

  2. tearaway_Tea Sep 22, 2008 13:53

    Да, провал конечно не из-за технологий случается, а по другим причинам. Но, я не акцентировал на провале Сонопии, якобы из-за Flex. Я пытаюсь сказать, что не так уж и слишком ужал область Flex.

    Последнее время, частенько думая на тему, а где же тот самый идеальный проект на Flex, пришёл к выводу — в большинстве случаев он именно не нужен.

  3. Slon_vsapogah Sep 22, 2008 14:46

    Интересно. Надо обдумать :)

  4. shish Sep 22, 2008 19:32

    блин - напечатал пост на три экрана, а этот вонючий валидатор его убил :-(((

    короче - смысл в том что ты недостаточно учитываешь человеческий фактор во всех его проявлениях - а именно
    1) заказчика (который хочет или не хочет флекса)
    2) людей которые с заказчиком работают для постановки задачи (BAA, UI- дизайнера и ситем архитектора) - которые своим пониманием или непониманием технологии могут все сделать хорошо или сделать использование флекса на проекте провальным
    3) кадровую проблемму

    PS: а еще я подумал что мне нужно срочно курсы провышения квалификации в области эдванседдатагрид

  5. tearaway_Tea Sep 22, 2008 20:06

    Хм, что там ещё за валидатор? Это у меня тут в коментах живёт какой-то ИИ?

    Да, чело-фактор не учитывал и не буду. Если его учитывать все статьи о технологиях можна заменить на шаблон — «Всё будет как Бог даст…».

    Да, да. Тут во Львове с гридом пять раз обвенчались, три раза развелись, а теперь наняли адвокатов, что-бы выяснить кто кому то должен =).

  6. shish Sep 23, 2008 15:25

    да блин этот валидатор Email: на странице - если ты забыл его вести или ввел с ошибкой - у меня кавычка была в прошлый раз - то это падло тебя предупреждает и весь текст нафиг убивает…

    человеческий фактор особенно по пункту 2 учитывать надо - если ты не будешь работать в этом направлении - будет тебе плохо

    а про AdvancedDataGrid могли бы на ближайшем фпуге рассказать (про опыт использования) - думаю в тему встречи попадает (ну и конечно в киеве в епаме надеюсь что ты проведешь по этому поводу тоже техтолк)

  7. shaman4d Sep 23, 2008 23:23

    Спасибо за исходники к сайтам.

  8. Rimy Dalv Oct 01, 2008 00:51

    Flex — уже давно состоялся как RIA, DIA framework. Судя по тех исходниках и примерах текущих разработок достаточно весомых проэктов ты не писал, и фантазии разве, что на

    >>>> “Flex – это наилучшее средство для разработки веб-приложений с большим количеством форм включая наборы нестандартных контролов ввода, с возможностью их скинования, включая все мультимедийные фичи флеш плеера, на основе легко сопровождаемого объектно-ориентированного программного кода.” - явно маловАто, и проблема с seo уже не проблема и для правильной работы кнопки Back можно заюзать externalize interface.

    Когда пишеш систему которая строит сама себя плюс необходима приличная скорость работы клиента и сервера то от html+js просто тошнит. Пишу как бывший ярый сторонник javascript’a. Как пример создай горизонтальный сплитер страницы на javascripte, заполни доки контентом типа [ tree | FCKeditor ]
    и где-же скорость и легковесность, удобство, качество сгенерированой разметки? При использовании контролов из EXT JS страница весит ну о-о-о-чень.

    При правильной разбивке Flex приложения на модули можно получить Application ~80-100kb, а модули и компоненты от 5-100 (30)kb, ПЛЮС при хорошем знании css в flexe можно создать фактически любой псевдо-тег html.

  9. tearaway_Tea Oct 01, 2008 10:49

    2 Rimy Dalv
    Я надеюсь, что вы написали достаточно количество вэсомых проектов.

    А можна про это — «при хорошем знании css в flexe можно создать фактически любой псевдо-тег html» поподробнее? Очень интересно!

  10. Infinity Nov 21, 2008 00:57

    He-he :)
    Anyway you are doing not bad with our current project.
    At least it gives you chance to see what the Flex is able when you try to squeeze it all. Or maybe what Flex is able when it tries to squeeze you all ))

Comments

Comments: