Сегодня получил хабра-сообщение. Суть: автор выбирает технологию для создания RIA-приложения. Его симпатии склоняются в сторону Flex, но у него есть вопросы. Впрочем, я нашу переписку процитирую и попрошу вас высказаться по поводу:
VasilioRuzanni, 8 сентября 2008, 14:30 Ростислав, добрый день. Обрисую ситуацию, а затем, задам собственно вопросы. Собственно, ситуация такая, что при разработке заказных решений для интранета у нас используется тонкий клиент с использованием Ajax. Однако, постоянно появляется желание и необходимость делать интерфейсы все более и более «богатыми», так что зачастую веб-приложения в интранете более похожи на «приложения» нежели на «веб». Издержки подобного подхода в последнем проекте перегнули все возможные и невозможные палки (в частности — кроссбраузерность и «мелкие красивости») — слишком уж много времени отбирает создание подобного с использованием HTML+CSS+JavaScript, да и работает недостаточно быстро. Все это заставило в очередной раз, но уже более усиленно посмотреть в сторону «полноценных RIA». Поскольку в качестве серверной технологии мы специализируемся на платформе .NET, первым претендентом на замену HTML+JS стал Silverlight. Впрочем, его тут же отмели по целой куче причин. Конечно, огромный плюс то, что он использует C# в качестве языка, но его сырость и работа со шрифтами заставили отказаться от него как от полноценной замены. Разумеется, вторым претендентом был Flex/Flash. И вот его использование пока что кажется очень даже реальным. Сейчас грядет проект, очень крупный, и цена подобного решения может быть очень высокой, поэтому и решил обратиться к профи в этом вопросе. Я понимаю, что наверняка ответы на многие вопросы можно найти, прочитав кучу документации, это в процессе, плюс ответы часто не лежат на поверхности. Интересуют, в частности, следующие моменты: 1. Насколько Flex в целом подходит для крупных решений со сложной бизнес-логикой? С учетом того, что это именно «тонкий клиент», то есть никаких расчетов на клиентской стороне не производится (кроме самых простых, необходимых для интерактивности). 2. Насколько Flex приспособлен для получения и работы с достаточно большим количеством данных (ну то есть, насколько теряется/не теряется производительность при работе, скажем, с очень длинными списками)? В частности, по сравнению с HTML+JS, если известно. 3. Какие могут быть подводные камни в использовании Флекса как замены HTML+JS для UI? 4. Насколько просто или сложно в целом разрабатывать собственные компоненты и поддерживать их по сравнению с аналогичными в HTML+JS? 5. С точки зрения того, что эта технология будет внедряться как новая (если будет), стоит ли сейчас полностью сосредоточиться на стабильной версии или же можно начинать сразу с Flex 4 Alpha? Буду премного благодарен за ответы на эти вопросы. Просто реально не у кого спросить — кругом так и живет стереотип того, что «все, что может быть проиграно Flash Player'ом — мультики или баннеры». А нам хотелось бы использовать технологию с большим размахом, в производстве интерфейсов информационнх систем. Заранее спасибо! rost, 8 сентября 2008, 17:36 Привет! Дельные вопросы. Отвечу сейчас очень коротко за нехваткой времени, а попозже — попробую дать более развернутые ответы. 1. Флекс хорошо подходит для создания сложных онлайн-приложений, или RIA. И чем сложнее приложение (до определенного разумного предела, конечно), тем больше Flex подходит для его разработки. Примером тому являются такие приложения, как, например, текстовый онлайн-процессор Buzzword. Также Flex использовала компания Oracle для производства 7 приложений. Множество примеров можно увидеть во Флекс-вики (некоторые уже могут быть уже устаревшими). 2. Для больших массивов Flex вполне приспособлен и будет их обсчитывать быстрее, чем в JavaScript (существует также проект, где ActionScript3 используется для быстрого разбора XML для AJAX-приложения). Но и здесь важно применять правильные алгоритмы для обработки огромных массивов данных. 3. Главные издержки Flex — интеграция с браузером и поисковыми машинами. Хотя и здесь уже делаются конкретные шаги для преодоления поисковых барьеров. Еще одна важная издержка — Flex нужно изучать, чтобы обойти возможные ловушки заранее. 4. На мой взгляд — проще, чем с JS, но при условии, что вы разобрались с устройством Flex-компонентов. В этом фреймворке уже есть много оптимизаций для производства как приложений, так и компонентов, но, повторюсь — нужно изучать их, чтобы использовать правильно. 5. Выбрать ли Flex 3, или Flex 4 сейчас — зависит от сроков вашего проекта. Если вы собираетесь выходить в релиз через год — то стоит начинать сразу с Flex 4. Но не все со мной согласятся. Если у вас есть такая возможность, то я очень рекомендую вам посетить встречу Российкой группы пользователей платформы Adobe Flash (RAFPUG). Думаю, что там вы сможете обсудить массу вопросов с опытными Flex-разработчиками. Вот — отчет о последней встрече, где было много хорошего Флекса. У меня предложение — давайте опубликуем ваши вопросы и мои ответы на стартовой странице сайта Ф Потрошителя? На этот ресурс каждый день ходит множество профессионалов. Уверен, им будет что добавить к моим экспромт-ответам (или поправить сказанное мной), и таким образом дать вам более полную картину.VasilioRuzanni, 8 сентября 2008, 18:45 О, спасибо огромное! Ответы достаточно емкие. Насчет публикации — вполне за! Вопросы самые общие, и я уверен, что именно их себе задает любой столкнувшийся с моей ситуацией человек. Уточнения по некоторым вопросам: 3. Изучение — само собой. Сейчас именно для этого и собираю информацию — чтобы иметь в виду, стоит ли вкладывать в углубленное изучение всей client-side-командой именно этой технологии. А интеграция с поисковыми машинами для нас даже не является проблемой — наша область деятельности — интранет и экстранет, ну то есть системы, а не веб-сайты. 5. Релизиться все будет постепенно, используя адаптивный (Aglie) подход и спринты длиной в месяц. Думаю, стоит пока остановиться на 3-й версии. Тут, кстати, возник еще вопросец: 6. Грядущая тема Adobe — Thermo — какое место в цепочке разработки предполагает занять? То есть, что такого нельзя (или слишком сложно) сделать с Flex сейчас, что можно будет сделать с Thermo? Вообще, сейчас склоняемся к реальному использованию Flex в проекте. Все-таки, графическая подсистема Flash намного превосходит голый html с картинками и JS для интерактивности, плюс за спиной у технологии не кто-нибудь, а Адоби — большая и стабильная компания. И еще очень радует тема интеграции и возможность запуска приложения на десктопе с использованием Adobe AIR. Про отстутствие проблемы кросс-браузерности и говорить не приходится, а установку Flash Player'а очень просто вписать в спецификацию разрабатываемого решения. P.S. Мы дислоцируемся в Тольятти, в связи с чем вопрос — проводятся ли встречи RAFPUG у нас или в Самаре (совсем рядом)? С удовольствием бы послушал и пообщался с людьми «в теме».
Ростислав, добрый день.
Обрисую ситуацию, а затем, задам собственно вопросы.
Собственно, ситуация такая, что при разработке заказных решений для интранета у нас используется тонкий клиент с использованием Ajax. Однако, постоянно появляется желание и необходимость делать интерфейсы все более и более «богатыми», так что зачастую веб-приложения в интранете более похожи на «приложения» нежели на «веб».
Издержки подобного подхода в последнем проекте перегнули все возможные и невозможные палки (в частности — кроссбраузерность и «мелкие красивости») — слишком уж много времени отбирает создание подобного с использованием HTML+CSS+JavaScript, да и работает недостаточно быстро. Все это заставило в очередной раз, но уже более усиленно посмотреть в сторону «полноценных RIA».
Поскольку в качестве серверной технологии мы специализируемся на платформе .NET, первым претендентом на замену HTML+JS стал Silverlight. Впрочем, его тут же отмели по целой куче причин. Конечно, огромный плюс то, что он использует C# в качестве языка, но его сырость и работа со шрифтами заставили отказаться от него как от полноценной замены.
Разумеется, вторым претендентом был Flex/Flash. И вот его использование пока что кажется очень даже реальным.
Сейчас грядет проект, очень крупный, и цена подобного решения может быть очень высокой, поэтому и решил обратиться к профи в этом вопросе. Я понимаю, что наверняка ответы на многие вопросы можно найти, прочитав кучу документации, это в процессе, плюс ответы часто не лежат на поверхности.
Интересуют, в частности, следующие моменты:
1. Насколько Flex в целом подходит для крупных решений со сложной бизнес-логикой? С учетом того, что это именно «тонкий клиент», то есть никаких расчетов на клиентской стороне не производится (кроме самых простых, необходимых для интерактивности).
2. Насколько Flex приспособлен для получения и работы с достаточно большим количеством данных (ну то есть, насколько теряется/не теряется производительность при работе, скажем, с очень длинными списками)? В частности, по сравнению с HTML+JS, если известно.
3. Какие могут быть подводные камни в использовании Флекса как замены HTML+JS для UI?
4. Насколько просто или сложно в целом разрабатывать собственные компоненты и поддерживать их по сравнению с аналогичными в HTML+JS?
5. С точки зрения того, что эта технология будет внедряться как новая (если будет), стоит ли сейчас полностью сосредоточиться на стабильной версии или же можно начинать сразу с Flex 4 Alpha?
Буду премного благодарен за ответы на эти вопросы. Просто реально не у кого спросить — кругом так и живет стереотип того, что «все, что может быть проиграно Flash Player'ом — мультики или баннеры». А нам хотелось бы использовать технологию с большим размахом, в производстве интерфейсов информационнх систем.
Заранее спасибо!
Привет!
Дельные вопросы. Отвечу сейчас очень коротко за нехваткой времени, а попозже — попробую дать более развернутые ответы.
1. Флекс хорошо подходит для создания сложных онлайн-приложений, или RIA. И чем сложнее приложение (до определенного разумного предела, конечно), тем больше Flex подходит для его разработки. Примером тому являются такие приложения, как, например, текстовый онлайн-процессор Buzzword. Также Flex использовала компания Oracle для производства 7 приложений.
Множество примеров можно увидеть во Флекс-вики (некоторые уже могут быть уже устаревшими).
2. Для больших массивов Flex вполне приспособлен и будет их обсчитывать быстрее, чем в JavaScript (существует также проект, где ActionScript3 используется для быстрого разбора XML для AJAX-приложения). Но и здесь важно применять правильные алгоритмы для обработки огромных массивов данных.
3. Главные издержки Flex — интеграция с браузером и поисковыми машинами. Хотя и здесь уже делаются конкретные шаги для преодоления поисковых барьеров. Еще одна важная издержка — Flex нужно изучать, чтобы обойти возможные ловушки заранее.
4. На мой взгляд — проще, чем с JS, но при условии, что вы разобрались с устройством Flex-компонентов. В этом фреймворке уже есть много оптимизаций для производства как приложений, так и компонентов, но, повторюсь — нужно изучать их, чтобы использовать правильно.
5. Выбрать ли Flex 3, или Flex 4 сейчас — зависит от сроков вашего проекта. Если вы собираетесь выходить в релиз через год — то стоит начинать сразу с Flex 4. Но не все со мной согласятся.
Если у вас есть такая возможность, то я очень рекомендую вам посетить встречу Российкой группы пользователей платформы Adobe Flash (RAFPUG). Думаю, что там вы сможете обсудить массу вопросов с опытными Flex-разработчиками. Вот — отчет о последней встрече, где было много хорошего Флекса.
У меня предложение — давайте опубликуем ваши вопросы и мои ответы на стартовой странице сайта Ф Потрошителя? На этот ресурс каждый день ходит множество профессионалов. Уверен, им будет что добавить к моим экспромт-ответам (или поправить сказанное мной), и таким образом дать вам более полную картину.
О, спасибо огромное! Ответы достаточно емкие.
Насчет публикации — вполне за! Вопросы самые общие, и я уверен, что именно их себе задает любой столкнувшийся с моей ситуацией человек.
Уточнения по некоторым вопросам:
3. Изучение — само собой. Сейчас именно для этого и собираю информацию — чтобы иметь в виду, стоит ли вкладывать в углубленное изучение всей client-side-командой именно этой технологии. А интеграция с поисковыми машинами для нас даже не является проблемой — наша область деятельности — интранет и экстранет, ну то есть системы, а не веб-сайты.
5. Релизиться все будет постепенно, используя адаптивный (Aglie) подход и спринты длиной в месяц. Думаю, стоит пока остановиться на 3-й версии.
Тут, кстати, возник еще вопросец: 6. Грядущая тема Adobe — Thermo — какое место в цепочке разработки предполагает занять? То есть, что такого нельзя (или слишком сложно) сделать с Flex сейчас, что можно будет сделать с Thermo?
Вообще, сейчас склоняемся к реальному использованию Flex в проекте. Все-таки, графическая подсистема Flash намного превосходит голый html с картинками и JS для интерактивности, плюс за спиной у технологии не кто-нибудь, а Адоби — большая и стабильная компания. И еще очень радует тема интеграции и возможность запуска приложения на десктопе с использованием Adobe AIR. Про отстутствие проблемы кросс-браузерности и говорить не приходится, а установку Flash Player'а очень просто вписать в спецификацию разрабатываемого решения.
P.S. Мы дислоцируемся в Тольятти, в связи с чем вопрос — проводятся ли встречи RAFPUG у нас или в Самаре (совсем рядом)? С удовольствием бы послушал и пообщался с людьми «в теме».
Друзья, вам есть что ответить автору вопросов или поправить мои ответы? Думаю, вопросы эти популярны и ответы на них могут пригодиться многим при выборе RIA-технологии. Напишите, что вы об этом думаете.
Сегодня мне пришло такое письмо от Виктора Рассохи:
Ростислав, привет! Будь добр, подскажи, если знаешь, есть ли способ решить проблему с Flash CS3 IDE, когда после компиляции окно с swf оказывается под окнами с инструментами и настройками? Пробовал поставить менеджеры окон, они позволяют изменить положение окна на Always On Top, но этот режим работает только до первого клика по окну, судя по всему, флэш в этот момент проводит пересортировку, и настройка слетает. В сети не нашел упоминания о данной проблеме вовсе, однако у нас в офисе проблема наблюдается у всех - возникает после компиляции более менее тяжелых и средних флэшей. Может быть, кто-то из посетителей твоего блога знает решение? Пожалуйста, подними вопрос - пока десятый флэш не вышел. :)
Будь добр, подскажи, если знаешь, есть ли способ решить проблему с Flash CS3 IDE, когда после компиляции окно с swf оказывается под окнами с инструментами и настройками?
Пробовал поставить менеджеры окон, они позволяют изменить положение окна на Always On Top, но этот режим работает только до первого клика по окну, судя по всему, флэш в этот момент проводит пересортировку, и настройка слетает.
В сети не нашел упоминания о данной проблеме вовсе, однако у нас в офисе проблема наблюдается у всех - возникает после компиляции более менее тяжелых и средних флэшей.
Может быть, кто-то из посетителей твоего блога знает решение? Пожалуйста, подними вопрос - пока десятый флэш не вышел. :)
Затем мне пришло еще одно письмо от Виктора, но уже не с вопросом, а с решением:
Кстати, сам недавно столкнулся с проблемой тормозов Flash CS3 IDE под вистой, знаю, что некоторые разработчики столкнувшись с ней даже переходили обратно на XP (ну, по крайней мере это была одна из причин). Опять же в сети не нашел решения данной проблемы, но она лечится очень просто - достаточно запустить флэш в режиме совместимости с Windows XP SP2 и флэш будет работать отлично. С уважением, Рассоха Виктор. BSmart:Interactive www.BSmart.ru
Опять же в сети не нашел решения данной проблемы, но она лечится очень просто - достаточно запустить флэш в режиме совместимости с Windows XP SP2 и флэш будет работать отлично.
С уважением, Рассоха Виктор. BSmart:Interactive www.BSmart.ru
Виктор, спасибо за дельный совет! И все же, друзья — как полечить окна во Flash CS3?
Во Flex Builder есть масса полезных команд меню, которые по неизвестным причинам не имеют закрепленных за ними клавиатурных сокращений. Например, команда «Find References In Project» — иногда очень важная при разборе кода, как своего, так и чужого, она помогает анализировать взаимосвязи между классами проекта. Команда эта доступна в контекстном меню редактора кода (Правый клик > References > In Project). Но хорошо было бы иметь ее на расстоянии одного шортката. Чтобы назначить его, делай так:
Возник чисто рабочий вопрос -- какоe из решений Flash Remoting под .NET вы считаете лучшим? Если можно -- почему?
Вопрос:
"Скорость проигрывания клипа зависит от производительности компьютера. На скоростном компе скорость проигрывания клипа увеличивается, на слабеньком компе -- затормаживается. Кто как рассчитывает скорость прокрутки клипа? Я имею в виду мультяшку. А то на одном компе персонажи бегают как угорелые, на на другом -- ползут как черепахи:-)"
Для сложных анимаций требуется много процессорного времени. Поэтому, когда процессор слабый, анимация не успевает прорисовываться (просчитываться) и "тормозит".
Для решения этой проблемы используется обходной прием "синхронизирующий звук". Суть приема в состоит том, чтобы форсировать проигрывание путем переключениия флэш-фильма в "fps-оптимизированный" режим, а для этого в фильм вводится звук типа "stream". При проигрывании такой звук принуждает всю анимацию двигаться с частотой кадров, указанной в свойствах документа. "Обратной стороной медали" этого приема является то, что некоторые кадры не успевают просчитаться и выпадают из фильма, и картинка становится рваной за счет сохранения скорости -- увы, этот прием не делает процессор мощнее, а только синхронизирует время. Таким образом, чем слабее процессор, тем больше будет рваться кадр. Но FPS будет стабильным.
Чтобы воспользоваться этим приемом:
mcKicker
Готово.
Теперь клип проигрывается c заданной скоростью, потому что он содержит в себе мувиклип mcKicker со стримовым звуком, форсирующим события фильма.
Также, теперь можно вставлять мувиклип mcKicker в любой фильм и таким образом форсировать его проигрывание.
Вот пример: использование техники Kicker Layer/Nullsound.
Исходный файл: Kicker Layer/Nullsound Example (262 Кб).
Этот вопрос действительно часто повторяется. Последний раз он звучал в конференции ruFlash так:
"Добавляю в библиотеку шрифт. И размер компилированного файла увеличивается на размер шрифта. А могу ли я использовать только некоторые символы из этого шрифта, -- чтобы при компиляции не весь шрифт прошивался в swf-ку, а только те символы, которые нужны?"
Иван Дембицкий написал статью с ответом на этот вопрос: "Как использовать embeded шрифты для текстовых полей."
Некоторые советы вдогонку (в порядке возрастания очевидности :):
См. также: "Streaming and file optimization techniques for Flash Player" от Macromedia и "Краткие рекомендации по оптимизации Flash-клипа" от Виталия Манакова.
Вопрос: "Я удаляю из fla-файла элементы, сохраняю его, а размер файла не уменьшается. Почему?"
Ответ: Мы его знали, но боялись сказать :-). Сегодня же, получив от Майка Чэмберса информацию, подтверждающую и расширяющую наши знания (о, неутомимый Майк!), мы можем с полной уверенностью заявить: флэш хранит все, что вы удаляете из рабочих fla-файлов (например, мувиклипы). На удаленных элементах флэш только ставит пометку "Считать несуществующим" — но не удаляет их на самом деле. Новое же содержимое всегда приписывается в конец файла. Это и есть причина раздувания ваших исходников.
Способ решения проблемы прост. Вам нужно сохранить fla-файл под другим именем, пусть оно отличается хотя бы на символ. При этом флэш действительно удалит из нового файла все то, что удаляли вы, и размер файла сократится. После этого вы можете вручную присвоить новому файлу старое имя (переместив предыдущий файл в архив или удалив его — осторожно!).
Следует заметить, что иногда этот способ позволяет уменьшить размер исходного файла в десятки раз.
Часто можно услышать такой вопрос: как открыть новое окно с помощью Flash? Уточним — речь идет именно о "самооткрывающихся" окнах, нагло вылезающих без всякого вашего желания, и стремящихся перейти в полноэкранный режим.
Вот именно их и не открывайте. Сдержите в себе этот губительный порыв, внемля следующим тезисам:
Совсем древнее: 17-20.09.2002, 23-30.09.2002, 01-04.10.2002, 07-11.10.2002, 14-19.10.2002, 20-26.10.2002, 27.10-02.11.2002, 04-08.11.2002, 11-16.11.2002, 18-23.11.2002 25-30.11.2002, 02-07.12.2002, 09-14.12.2002 Сайт заработал 17.09.2002