В 21:30 по киевскому времени начнется первая, пробная трансляция презентации по основам PureMVC с международной встречи URAFPUG.
Смотреть и задавать вопросы в чате по этому адресу: adobechats.adobe.acrobat.com/uafpug.
Сегодня я без всякого умысла разговорился с php-программистом о практиках кодирования. Была затронута тема паттернов, затем тема MVC, а затем он произнес слово 'PureMVC'. На мой удивленный вопрос, откуда он услышал этот термин, он ответил, что знакомые пиэйчпишники уже прожужжали ему уши этим самым Pure MVC для PHP. Как когда-то прожужжали ему те же самые уши Зенд фреймворком и т.п.
Я, конечно, знал, что изначально созданный для чистого AS3 фреймворк PureMVC уже портирован на PHP и множество других языков. Вот полный список: ActionScript 2, ActionScript 3, C#, ColdFusion, Java, Perl, PHP, Python и Ruby. Но что PureMVC приобрел популярность такого уровня среди русскоязычного PHP-сообщества — я и подумать не мог.
Что ж, эта популярность, дополняя картину быстрого портирования на восемь языков, лишний раз дает повод думать, что PureMVC пришелся по вкусу не только Flash- и Flex- разработчикам.
По этому поводу еще раз сошлюсь на подборку статей по PureMVC для AS3 — на русском.
Но не забываем: заставь идиота хоть байткод писать — он и клавиатуру расшибет, и байткод обругает.
Вот одна из лучших в мире дискуссий про PureMVC и о программировании вообще. Ведь дискуссию ведут очень толковые люди, среди которых есть и автор PureMVC Клифф Холл, и работающий на Yahoo Джош Туньяла, и много кто еще, включая людей, в PureMVC совсем начинающих. А комментарии к этой статье важнее нее самой.
Из одной этой дискуссии можно узнать несколько полезных вещей:
Короче: чтение комментов к этой статье (а чтобы понять их, нужно сначала осилить саму статью) стоит нескольких часов гугления на тему PureMVC.
Продолжаем выкладывать презентации с UAFPUG-1 в порядке изложения докладов на самой встрече.
Предупреждение: материал представлен "как был". Мы решили, что лучше выложить презентации такими сейчас, чем выложить их слишком поздно или не выложить вообще.
Итак, презентация вторая — от Ростислава '_rost' Сирыка. У нее есть особенность: презентация оптимизирована под устный доклад, поэтому не серчайте, если мало буков (зато много ссылок :):
Скачать файл презентации. Продолжение следует.
См. также первую презентацию: Эльдар Прилуцкий, Событийная модель AS3.0 и втоарую: Денис Папазов, Flash Media Server 2 и новое в FMS3.
Flash-, Flex- и AIR-фреймфорк PureMVC (я когда-то начал писать цикл статей о нем (и закончу)) набирает популярность, в том числе и в рунете.
Я неоднократно слышал нарекания: мол, новинка вышла, а ничего не понятно, как ею пользоваться — неизвестно. Но не в случае с PureMVC. Уже сейчас на русском языке есть масса статей по этому компактному и фреймворку, в том числе и переводных. В частности, Injun написал о PureMVC несколько отличных постов, за что ему отдельные респект и уважуха:
По поводу моей серии. Моей изначальной целью было последовательное ознакомление с концепциями, заложеннными в PureMVC — и я буду придерживаться этого подхода. Сочетая прикладные аспекты, изложенные в указанных выше статьях Injun'а, со следующими более теоретическими материалами, читатель получит максимально широкое понимание фреймворка PureMVC и не только:
Друзья, еще раз спасибо за массу полезных комментариев к статьям. Я уверен, что ни одна из написанных вами строк не пропадет зря и кому-то (с кем вам, возможно, еще придется работать) поможет разобраться с лучшими практиками разработки.
Друзья, данная часть цикла статей о флэш-фреймфорвке PureMVC должна называться "Как обмениваются Оповещениями участники PureMVC". Но комментарии к предыдущей части, "Фасад — ядро и лицо фреймворка PureMVC" навели на мысль, что стоит подробнее выяснить назначение и концептуальное устройство PureMVC, прежде чем переходить к более конкретной теме. Поэтому сначала еще немного о цели PureMVC, а также о крупных частях его тела: о Модели, Представлении, Контроллере и Фасаде.
В PureMVC Модель, Представление и Контроллер реализуются как три одноименных класса-синглтона: Model, View, Controller. В то же время, PureMVC организован так, что разработчик может использовать данные классы прозрачно, с помощью Фасада, тоже Синглтона. Этот класс знает каждого из трех главных участников системы. Такой Фасад можно назвать Центральным Фасадом приложения.
Теперь коротко о каждом из трех главных игроков-синглтонов Pure MVC (Синглтон — это класс, гарантирующий существование только одного своего экземпляра, поэтому его также называют Одиночкой).
Так в PureMVC Модель отделяется от Представления.
Синглетоны Модели, Представлениея и Контроллера в PureMVC, по сути, не делают ничего, кроме выдачи ссылок на своих представителей. Именно поэтому подавляюще бОльшая часть кода при реализации PureMVC-приложения пишется именно внутри этих представителей: Посредников (представляют модель данных), Медиаторов (представляют вид приложения) и Команд (дают управление).
Разработчик PureMVC-приложения получает всю необходимую функциональность, просто расширяя Фасад PureMVC своим классом, таким образом получая Конкретный Фасад приложения. И уже через этот Конкретный Фасад происходит работа с Конкретными Посредниками, Медиаторами и Командами — то есть с данными приложения и его видом, а также общее управление им.
Почитайте о Фасаде в PureMVC еще раз. Если стало понятнее, то эта запись не прошла зря.
Друзья, пока пишу про PureMVC, понимаю, что рано или поздно встанет вопрос сравнения его с доминирующим сейчас MVC-фреймворком для Flex — микро-архитектурой Cairngorm.
Меня интересуют два вопроса: 1. Есть ли среди посетителей Flash Ripper люди, использующие Cairngorm в работе или изучавшие его? Сколько вас? 2. Существует ли статья (или серия) с описанием Cairngorm на русском?
(Сейчас жалею, что в свое время не написал о Сairngorm почти ничего, кроме пояснения, кому и почему не следует его использовать).
Продолжаю описание флэш-фреймворка PureMVC рассказом о центре системы—Фасаде.
Там же мы узнали, что Фасад (Façade) — это участник, предоставляющий членам системы MVC прозрачный взаимный доступ друг к другу.
Наличие Фасада и есть причина отсутствия "Model", "View" и "Controller" в списке членов PureMVC. Дело в том, что Фасад "прячет" за собой эти части фреймворка, обеспечивая им взаимную видимость "сквозь фасад". Это так же прозрачно и для разработчика приложения. Конкретно, для разработчика-пользователя PureMVC это означает, что вы не обязаны явным образом создавать экземпляры этих трех ключевых классов: они строятся автоматически при создании Фасада. Разработчик создает один экземпляр класса Facade, а в дальшейшем все участники системы используют Фасад как централизованную точку доступа друг к другу.
static const NOTE_APP_INIT: String = "noteAppInit"
getInstance
initializeController
Команды же используются как макро-операции, руководящие работой системы в целом. Их деятельность можно уподобить действиям дирижера. Например, команды могут координировать последовательность действий при инициализации или закрытии приложения. Каждая команда — это часть Контроллера. Фасад знает о Контроллере и дает прозрачный доступ к каждой Команде; таким образом, разработчик оперирует не самим Контроллером, а его представителями—Командами.
В следующей части — о том, как обмениваются Оповещениями участники PureMVC.
Вопрос: понятно ли я излагаю? Что следует уточнить, а на что дать ссылки?
Друзья, спасибо вам за интересные комментарии к медитации на PureMVC. Спасибо за увлекательную дискуссию с множеством ссылок, по которым мне ходить и ходить. Много думал, отвечу всем, а пока продолжаю запланированный рассказ.
Такова архитектура PureMVC в общих чертах.
Следующая часть: Фасад (Façade) — ядро и лицо фреймворка PureMVC. Также почитать: Почитать о классическом Фасаде. Забыть.
Стоп. Медитируй.
Совсем древнее: 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