Cairngorm, Parsley, PureMVC, Mate, Swiz, Robotlegs
Встречал несколько раз упоминание, что Cairngorm скорее мертв, чем
жив, но он был одним из первых.
Подобная тема обсуждалась, но давно. Хотелось бы свежих данных на эту
тему.
--
Best Regards
Roman 'Obi' Guliev
______________
Jloa.
On 4 авг, 20:22, Denis Borisenko <dborise...@gmail.com> wrote:
> Лично я считаю лучшим фреймворком Robotlegs. Я в нем не нашел слабых мест и
> считаю его почти совершенным MVCS фреймворком. Там более совершенно устроены
> injections, чем в mate. Там все делается на уровне мета-программирования,
> что все очень комфортно. Кроме того, есть возможность использовать не
> Flash'овую событийную систему, а использовать Signal'ы.
>
> PureMVC мне не нравится своими широковещательной статичной событийной
> системой. Там события обрабатывает не конкретный экземпляр, а все экземпляры
> класса. Подробнее на руфлеше я уже высказывал свои негодования. Или можно об
> этом почитать тут:http://blog.dborisenko.com/2010/01/15/shirokoveschatelnyie-opoveschen...
>
> С Craingorm' ом работал давно.. помню только мнение, что он убог.. а
> конкретики не помню.. Кажется там не была предусмотрена возможность
> приложения не с одним ядром (multicore)
>
> Mate мне вааще не понравился... там все зашито в (m)xml... вот один из
> примеров: в метод инвокере зашито имя метода как строка.. что затрудняет
> рефакторинг. <MethodInvoker method="methodToExecute"
>
> Короче, после того как начнешь работать в Robotlegs -- тебе покажется убогим
с уважением.
> Читайте первоисточники и будете хорошими профессионалами.
Даже с использованием http://translate.google.com есть высокая
вероятность стать хорошим профессионалом. У меня уже давно этот сервис
на хоткее в опере.
--
Oleg Galaburda
http://blog.actualwave.com/
http://jsinterface.googlecode.com/
http://guibuilder.org/
И вот какой момент я не понял: как инжектировать экземпляры классы,
которых может быть много?
Если экземпляр может быть только один, то тут всё ясно: если пока не
было, создать новый, если уже есть, инжектировать существующий.
А если у класса может быть несколько экземпляров, как указать, который
из них инжектировать?
Или этот случай роботлегсом не обрабатывается и надо использовать
классические средства (типа передачи аргумента в конструктор)?
[Inject]
public var myDependency:Depedency; //unnamed injection
injector.mapVaue(Depedency1, Instance);
Чтобы инжектировать конкретный экземпляр класса в конкретное место
используется именование в метатэге:
[Inject(name="myNamedDependency")]
public var myNamedDependency:Depedency; //named injection
Тогда иньекция делается так:
injector.mapVaue(Depedency2, Instance, "myNamedDependency");
Кстати, интересно посмотреть, что будет если использовать вызвать оба
способа одновременно - подозреваю что runtime error. Завтра попробую.
И в частности по поводу named injections в robotlegs на английском:
http://knowledge.robotlegs.org/discussions/questions/135-unnamed-vs-named-injection-swiftsuspenders-adapters
> И в частности по поводу named injections в robotlegs на английском:http://knowledge.robotlegs.org/discussions/questions/135-unnamed-vs-n...
Для флекса - Mate (с оговорками), А вообще смотрел бы в сторону Parsley
Swiz - похож на Mate идеологией.. но имхо как-то напряжнее
PureMVC - как коню шоры.. хорош для начала, ибо принуждает следовать
своим принципам.
--
С уважением, Скорик Андрей. andrew...@gmail.com
Класс с высокой степенью связанности (или жестко связанный) зависит
от множества других классов. Что приводит к проблемам:
* Изменения в связанных классах приводят к локальным изменениям в
данном классе.
* Затрудняется понимание каждого класса в отдельности.
* Усложняется повторное использование, поскольку для этого
требуется дополнительный анализ классов, с которыми связан данный
класс.
DI используется в Parsley, Mate, Swiz, Robotlegs, а в последней версии
(3й) Cairngorm предлагает также использовать DI и рекомендует для
этого Parsley.
И да, последнее время я использую Robotlegs.
Оверхед при использовании метатегов несомненно минус. Возможность
использования без Flex - плюс. В отличие от Mate легче проводить
рефакторинг. Ну а впрочем у каждого фрэймворка есть свои плюсы и
минусы
Метатеговые фрейворки имеют минус в том что вы всегда должны быть в
"тонусе" и понимать что куда вы заижектили/что вызывается. Все эти
связи у вас разбросаны по коду, собрать во едино картину проекта
трудно. Мате позволяет все эти связи вынести в евент мапы и иметь
более четкую картину что же происходит.
В "обычной" жизни вам совсем будут ненужны всякие навороты и фичи всех
фреймворков. Как только у вас появляется очень сложный и большой
проект то фреймворки в нем ровным счетом ничего не решают. Тут все
больше строится на оргинизации комманды и соглашениях принятых в
комманде, и правильной организации кода.
Вообще ни один из фреймворков не является серебряной пулей и если вы
пишите говнокод то никакой фреймворк вам не поможет. Если вы пишите
хороший код, то любой из фреймворков будет вам помощником, правда,
некоторые довольно агрессивны в плане "правил помощи".
2010/8/13 Victor Kostin <victor...@gmail.com>:
> --
> Все правила мейл листа руФлекс:
> http://groups.google.com/group/ruflex/web/ruflex?hl=ru
>
> Русскоязычная Flex-вики: http://wiki.flash-ripper.com/
> Страница группы с поиском: http://groups-beta.google.com/group/ruflex?hl=ru
>
> RSS 2.0-канал группы (50 новых тем ): http://groups.google.com/group/ruflex/feed/rss_v2_0_topics.xml?num=50
>
> RSS 2.0-канал группы (50 новых сообщений): http://groups.google.com/group/ruflex/feed/rss_v2_0_msgs.xml?num=50
>
> Первое правило мейл листа руФлекс:
> Письма отправляются в UTF-8 с ящика, на который пришло письмо.
>
> Второе правило мейл листа руФлекс:
> Ненужные цитаты при ответе удаляются.
>
> Написать в группу: ruf...@googlegroups.com
> Отписаться: ruflex-un...@googlegroups.com
--
Ilja Panin
http://the33cows.com
В идеологии DI есть понятие конфигурации, где определяется что куда
заижектили. Обычно это файл xml, как в Spring. В Мате евент мапы тоже
выполняют функцию файла конфигурации, но проблема в том, что матешная
мапа выходит за рамки декларативности, простого описания зависимостей,
и включает в себя императивную составляющую, то есть
последовательность выполнения комманд, например, в каком-нибудь
EventHandlers мы вызываем HTTPServiceInvoker, затем результат вызова
отправляем в Менеджер и испускаем EventAnnouncer, и вот уже xml у нас
выглядит как код приложения. Программирование на декларативном xml не
приводит ни к чему хорошему, характерный пример тому jelly
http://commons.apache.org/jelly/. Кроме того, мапы мате без
дополнительных телодвижений можно использовать только с Flex, хотя в
том же Parsley файл конфигурации может быть как mxml, так и xml. А
насчет разбросанности связей, так Context в Robotlegs тоже собирает
воедино картину проекта как и евент мапа, но при этом является as
классом и лучше воспринимается IDE, не говоря уже о компиляторе,
который много чего не сможет проверить в EventMap.
2010/8/13 kuril <kuril2008a...@gmail.com>: