Mate - мой выбор. Первая и главная причина в том, что она совершенно ненавязчива. Мой код приложения не имеет зависимостей от фреймворка, он сильно развязан, многоразовый и проверяемый.
Одна из самых приятных функций Mate - декларативная конфигурация, по сути, вы подключаете приложение к использованию тегов в так называемой карте событий - в основном список событий, которые генерирует ваше приложение, и какие действия следует предпринять, когда они происходят. Карта событий дает хороший обзор того, что делает ваше приложение. Mate использует собственный механизм событий Flex, он не изобретает свои собственные, как большинство других фреймворков. Вы можете отправлять событие из любой точки иерархии представлений и автоматически создавать пузырьки в каркасе, вместо того, чтобы иметь прямую линию, например Cairngorms CairngormEventDispatcher или систему уведомлений PureMVC.
Mate также использует форму впрыска зависимостей (рычажные привязки), которая позволяет подключать ваши модели к вашим представлениям, не зная друг друга. Это, вероятно, самая мощная функция структуры.
На мой взгляд, ни одна из других фреймворков Flex не подходит к Mate. Тем не менее, это соперники и почему я считаю их менее полезными:
PureMVC активно отказывает вам в преимуществах Flex (например, привязок и пузырьков событий), чтобы каркас был переносимым - цель на мой взгляд. Он также чрезмерно спроектирован и столь же инвазивен, как и они. Каждая часть вашего приложения зависит от структуры. Однако PureMVC не страшен, просто не очень подходит для Flex. Альтернативой является FlexMVCS, стремление сделать PureMVC более подходящим для Flex (к сожалению, документации пока нет, просто источник).
Cairngorm - это набор анти-шаблонов, которые приводят к приложениям, которые тесно связаны с глобальными переменными. Нафф сказал (но если вам интересно, here are some more of my thoughts и here too).
Swiz - это структура, основанная на платформе Spring для Java и Cairngorm (которая пытается компенсировать наихудшие части последних). Он предоставляет контейнер для инъекций зависимостей и использует метаданные для включения автоматической проводки зависимостей. Это интересно, но немного bizzare в том, что идет на такие длины, чтобы избежать глобальных переменных Cairngorm, используя инъекции зависимостей, но затем использует глобальную переменную для централизованной диспетчеризации событий.
Это те, которые я пробовал. Есть несколько других, о которых я слышал, но никто из них, которые, как мне кажется, широко не используются. Mate and Swiz были представлены на недавней конференции 360 | Flex, и есть видеоролики (the Mate folks have instructions on how to watch them)
Хороший анализ и в целом я согласен с вами. Следует отметить, что центральный диспетчер в Swiz является необязательным и действительно необходим только тогда, когда у вас есть событие, о котором многие виды/компоненты требуют уведомления, такие как логин, выход из системы и т. Д. – 2009-04-11 14:31:54
Долгое время, но спасибо за продуманный ответ. В то время я уже был привержен PureMVC. И я нашел несколько плюсов (чистое разделение между слоями) и минусы (количество кода, проверяемость и система уведомлений). Основываясь на ваших отзывах и других отзывах, я только что начал новый проект с Mate. – Rydell 2009-07-31 14:36:38
Я почувствовал то же самое, когда начал изучать Cairngorm. Первое, о чем мне говорят, это ModelLocator, чтобы отслеживать модели и состояние приложения? Это звенел несколько колоколов, особенно в качестве учебника «Начало работы». – seanmonstar 2009-10-30 17:26:45