Суть данной статьи заключается в изложении моего опыта по разработке приложений на технологии 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 программиста в проект, где его роль сомнительна или абсурдна, подумайте обстоятельно, что бы исскуственно не стать «слабым звеном» в глазах нахальных жавистов или гордых сишарпщиков — сотрудников по проекту (и такое на моём опыте бывало).
“Веб-приложения, которые не RIA”
Слишком уж ужал область для флекса/флеша :)
В большинстве описаных случаев провала виновата не технология и ее выбор, а недопонимание и недоформирование целей которые добиваются от проекта. Поэтому следует и провал.
В принципе это свойствено всем технологиям)
Да, провал конечно не из-за технологий случается, а по другим причинам. Но, я не акцентировал на провале Сонопии, якобы из-за Flex. Я пытаюсь сказать, что не так уж и слишком ужал область Flex.
Последнее время, частенько думая на тему, а где же тот самый идеальный проект на Flex, пришёл к выводу — в большинстве случаев он именно не нужен.
Интересно. Надо обдумать :)
блин - напечатал пост на три экрана, а этот вонючий валидатор его убил :-(((
короче - смысл в том что ты недостаточно учитываешь человеческий фактор во всех его проявлениях - а именно
1) заказчика (который хочет или не хочет флекса)
2) людей которые с заказчиком работают для постановки задачи (BAA, UI- дизайнера и ситем архитектора) - которые своим пониманием или непониманием технологии могут все сделать хорошо или сделать использование флекса на проекте провальным
3) кадровую проблемму
PS: а еще я подумал что мне нужно срочно курсы провышения квалификации в области эдванседдатагрид
Хм, что там ещё за валидатор? Это у меня тут в коментах живёт какой-то ИИ?
Да, чело-фактор не учитывал и не буду. Если его учитывать все статьи о технологиях можна заменить на шаблон — «Всё будет как Бог даст…».
Да, да. Тут во Львове с гридом пять раз обвенчались, три раза развелись, а теперь наняли адвокатов, что-бы выяснить кто кому то должен =).
да блин этот валидатор Email: на странице - если ты забыл его вести или ввел с ошибкой - у меня кавычка была в прошлый раз - то это падло тебя предупреждает и весь текст нафиг убивает…
человеческий фактор особенно по пункту 2 учитывать надо - если ты не будешь работать в этом направлении - будет тебе плохо
а про AdvancedDataGrid могли бы на ближайшем фпуге рассказать (про опыт использования) - думаю в тему встречи попадает (ну и конечно в киеве в епаме надеюсь что ты проведешь по этому поводу тоже техтолк)
Спасибо за исходники к сайтам.
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.
2 Rimy Dalv
Я надеюсь, что вы написали достаточно количество вэсомых проектов.
А можна про это — «при хорошем знании css в flexe можно создать фактически любой псевдо-тег html» поподробнее? Очень интересно!
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 ))