Привет ребята, пишу вам из далёкой Калифорнии, куда забросила судьба меня и мою жену. Так получилось, что я, очень резко, из флексера-страдальца превратился в счастливого сильверлайтера. Все мои коллеги уже успели получить от меня тонны положительных отзывов о данной технологии. Мой энтузиазм в описании всех фичей Silverlight и до сих пор не угасает. Правда, у меня возникла диллема: мой блог был расчитан на аудиторию флексеров, и это было бы опрометчиво, просто изменить тематику статей — поэтому так долго и не писал.
Category: Flex
Инвалидация свойств невизуальных объектов
Наверно, следовало бы сначала описать своё понимание паттерна «Инвалидация чего-либо» во Flex. Может быть напишу статью о полезности такого подхода в разработке визуальных компонентов. В общем, возможно, вы часто используете пару методов invalidateProperties() / commitProperties() для отложеного выполнения логики set методов свойств ваших компонентов. Эта пара определена в базовом для всех Flex контролов классе UIComponent.
Краткий смысл паттерна в том, что мы ожидаем присваивание значений набору свойств компонента в течение одного кадра Flash Player-а, а последующюю логику обработки этих значений переносим на следующий кадр. Это может повысить производительность приложения, а так же навести порядок в обработке значений связанных между собой свойств компонента.
Полагаю, что инвалидация свойств компонентов во Flex практикуется потому, что большинство компонентов инстанциируется посредством MXML и порядок присваивания свойств спрогнозировать невозможно.
Но, на практике, возникаются ситуации, когда подобный механизм нужен и в невизуальных объектах, например элементах модели бизнес-логики, которые приходят от сервера.
Моя презентация с iForum 2009
Согласно сообщению от организаторов, форум посетило около 1200 человек. Большинство из них мало интересовалось потоком «Интернет-Технологии», что логично, так как в основном аудитория состояла из специалистов по рекламе, владельцев украинских интернет компаний, а также людей, мечтающих о владении подобными и прочих «интернет-дельцов».
Но, несмотря на немногочисленную аудиторию, я с удовольствием посмотрел и послушал выступление создателя библиотеки Away3D, Александра Задорожного, как часть доклада «Трёхмерные вебсайты и вебсервисы: возможности, преимущества и перспективы». Он, довольно грустно поведал о разочаровании последней версией Flash Player 10 на предмет отсутствия ожидаемой полной поддержки 3D, а не только базового функционала. Сказал, что забросил своё детище, хотя и удивлён тем, что, проект Away3D так долго существует (связывает это с низкой функциональностю API Flash Player-а).
Мою презентацию можно прокликать он-лайн. Вроде бы будет и видео с выступления (но как часто бывает, после окончаний конференций уже некогда и незачем подобным заниматься).
По уже сложившейся «традиции», после моего выступления Сергей Байдачный из Microsoft рассказал о Silverlight. На этот раз о новых фичах третьей беты. Вообще, мне очень интересна тема разработки на Silverlight (думаю, как и большинству сознательных флексеров). Flex до сих пор сложно назвать самым крутым средством для RIA, ввиду забивания со стороны Adobe на большинство вопросов программистского характера (рефакторинг, логичной и управляемой снаружи ООП моделью базовых компонентов, возможности языка Action Script). Так как Silverlight является наследником крутейших средств и методологий .NET-а, то он априори — крут, крут, крут.
Пример использования Mate Flex Framework
Сразу же после появления на свет вышеуказанного фреймворка я описал своё первое впечатление о нём. В нашем большом приложении корпоративного уровня мы его успешно используем и по сей день.
Некоторые коллеги постоянно норовят разузнать все детали и нюансы использования Mate на практике и в связи с этим я решил описать пример типового архитектурного решения основанного на модели реального приложения. Он похож на примеры с сайта фреймворка, но расписан пошагово с конкретными рекомендациями на всех уровнях.
Оптимальный паттерн для работы с RemoteObject
В продолжение темы советов новичкам, поведаю о самом удобном способе инкапсуляции вызовов серверных методов. Назовём этот паттерн ServiceBase, по-сути это базовый класс, от которого должны наследоваться ваши сервисы (наборы методов, соответствующие серверным):
More…
Flex Formatter
Наверно многие уже слышали и проверили как работает долгожданный плагин для форматирования кода Action Script и разметки MXML — Flex Formatter (http://flexformatter.sourceforge.net/). Но, тем не менее, версия 0.6.7 не включала в себя таких жизненно важных параметров как кол-во пробелов около символа «:» и т.п., а так же имела очень мрачную панель управления.
На прошедших выходных я решил связаться с разработчиком плагина Ернестом. Он оказался очень отзывчивым человеком. Мы обменялись с ним некоторым опытом разработки на Action Script и он пообещал доработать плагин и поправить панель настроек.
Сегодня утром, я обнаружил новую версию 0.6.8, которая практически идеальна. Всем рекомендую к использованию, что-бы ваш код был сексуален как никогда ранее.
А так же, не забывайте все претензии добавлять в баг-трекер проекта. Слава Богу, автор очень отзывчивый и оперативный.
Советы новичкам
В основном это список произвольных мелких нюансов без сортировки и развития. Рекомендуется к быстрому прочтению, что-бы задействовалось подсознание :-).
More…
To Flex or not to Flex
Суть данной статьи заключается в изложении моего опыта по разработке приложений на технологии Flex в разрезе принятий решений о выборе или не выборе онной на конкретных проектах. Да, именно так, очень часто возникают ситуации, когда использование Flex не только невыгодно по временным ограничениям, но и губительно для проекта.
5 копеек о Mate Flex Framework
До последнего момента я очень скептически относился ко всем существующим фреймворкам для Flex. Я, конечно, не уделял особого внимания изучениям подробностей Cairngorm или PureMVC, но тем не менее мне было известно их основное устройство. Например я презираю глобальную доступность View из любого места в коде проекта написанного с использованием Cairngorm. Так же, меня напрягло количество промежуточных классов PureMVC, от которых код разбухает как на дрожжах. Имеено по-этому я никогда ничем не пользовался кроме базовой компонентно-событийной системы Flex Framework.
Поддавшись на восторженые отзывы риа-гуру я решил разобратся что и к чему. Не надейтесь, я не собирась тут расписывать по-русски о модели работы Mate, я опишу лишь несколькими предложениями: это действительно круто и я отвечаю за свои слова.
Я считаю, успех Mate связан с тем, что это не портированый фреймворк, а написаный именно под Flex. Он использует основные (возможно и не очень правильные) принципы и особенности Flex фреймворка, такие как:
- наследование всех классов от EventDispatcher, которое позволяет использовать bubbling-события, как основные носители сообщений между View, Model и прочими сущностями;
- довольно идентичную особенность биндинга, с помощью которой Mate наладило ненавязчивый IOC (Inversion of Controls);
- разметку mxml для описания деклараций связующих механизмов приложения в простой и понятной форме.
И все это работает поверх сущностей вашего приложения, без необходимости наследования утомляющих абстрактных классов команд, медиаторов, моделей и пр. Ну и на десерт, Mate фреймворк отлично расширяется путем наследования ваших дополнений от базовых управляющих классов.
В общем, листая документацию сайта, можно получить первое впечатление не более чем за час. Просмотр исходного кода подтвердает подозрения, что авторы проекта — отличные профессионалы, которые обернули нюансы Flex в бонусы. Нужно пользоваться!
Пару слов о MacroContent Builder
На моей последней работе в голландской компании KZOO webcreatie я разрабатывал AIR приложение для визуального построения шаблонов к некоему серверному движку, которым владеет компания. Приложение предоставляет пользователям набор элементов (список, елемент, контент) для построения гибкой древовидной структуры. Результатом работы есть XML файл, в котором содержится как некоторая скриптовая логика, так и структура БД, а так же и HTML представление. Серверный движок на основе этого файла реализует связь с БД и генерирует конечную HTML страницу. Система довольно универсальная, но, конечно же, не может покрыть узкопрофильные решения, только типовые сайты.
Программа доступна для ознакомительной установки. Наврядли удастся как-то использовать на практике, без соответствующего ПО для серверной стороны.
More…