2008-08-31 3 views
33

Я в настоящее время использую и использую фреймворк Flex MVC PureMVC. Я слышал о хороших вещах о Cairngorm, который поддерживается Adobe и имеет импульс от первого выхода на рынок. И есть новый игрок под названием Mate, у которого много шума.Flex MVC Frameworks

Кто-нибудь пробовал две или три из этих фреймворков и сформировал мнение?

Спасибо!

ответ

48

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)

+0

Хороший анализ и в целом я согласен с вами. Следует отметить, что центральный диспетчер в Swiz является необязательным и действительно необходим только тогда, когда у вас есть событие, о котором многие виды/компоненты требуют уведомления, такие как логин, выход из системы и т. Д. – 2009-04-11 14:31:54

+0

Долгое время, но спасибо за продуманный ответ. В то время я уже был привержен PureMVC. И я нашел несколько плюсов (чистое разделение между слоями) и минусы (количество кода, проверяемость и система уведомлений). Основываясь на ваших отзывах и других отзывах, я только что начал новый проект с Mate. – Rydell 2009-07-31 14:36:38

+0

Я почувствовал то же самое, когда начал изучать Cairngorm. Первое, о чем мне говорят, это ModelLocator, чтобы отслеживать модели и состояние приложения? Это звенел несколько колоколов, особенно в качестве учебника «Начало работы». – seanmonstar 2009-10-30 17:26:45

0

Имейте в виду, что Cairngorm является платформой, спонсируемой Adobe, и теперь размещается на сайте opensource.adobe.com. Также обратите внимание, что это на сегодняшний день самый распространенный среди разработчиков на данный момент.

Если вы знаете Cairngorm и ищете работу, вы не ошибетесь.

1

В настоящее время мы работаем над реализацией в Spring ActionScript. Он использует полную мощность контейнера «Инверсия управления», поэтому у вас есть централизованное управление зависимостями и они легко меняются. Он не очень предписывает, как вы это делаете, но предоставляет вам очень гибкую инфраструктуру.

Если вы новичок в Spring ActionScript и MVCS, у меня есть вводный пост в моем блоге: http://www.herrodius.com/blog/158

5

Я видел эти виды дискуссий много много раз. Обычно они начинаются с WHICH Flex framework, который вы используете. Не многие люди задают вопрос, ПОЧЕМУ, вам даже нужно использовать любую фреймворк поверх флеш-фреймворка.

Я не сторонник использования любой структуры MVC (Cairngorm, PureMVC) в коде Flex. Мате - лучший кандидат. По крайней мере, это просто понять и неинтрузивно. Я предпочитаю использовать расширенные компоненты
à la carte. Мы создали и открыли источники из них (см. Clear.swc в Clear Toolkit на http://sourceforge.net/projects/cleartoolkit/.

В первой главе нашей предстоящей книги O'Reilly «Enterprise Development with Flex» представлено подробное сравнение нескольких Flex рамки:. http://my.safaribooksonline.com/9780596801465

0

MATE является способ рамках go.A, который делает то, что система должна делать отсоединена Architecture Простой Малый отпечаток стопы эффективность

0

Я вроде у меня есть сомнения на этих MVC. (Mate, Cairgnorm и т. д.) с тем, как они реализуют e вентиляционные карты и контроллеры событий, это напоминает мне слишком много wxWidgets и других инструментов GUI такого рода.

Однако было бы очень приятно, если Flex или одна из этих фреймворков MVC использует парадигму Signal/Slots, предлагаемую Qt.

0

Я рекомендую использовать MATE для разработки больших и сложных проектов, как и другие фреймворки, Mate адресует общие архитектурные проблемы в Flex, такие как обработка событий, привязка данных и асинхронная обработка, но самая важная цель состоит в том, что это только тег , поэтому его очень легко использовать в наших приложениях Flex.

7

Отъезд Robotlegs.

«Это обеспечивает клей, который ваше приложение должно легко функционировать развязанным способом. Благодаря использованию автоматической инъекции на основе метаданных Robotlegs удаляет код шаблона в приложении. Способствуя свободному соединению и избегая использования синглтонов и статики в рамках Robotlegs может помочь вам написать код, который можно тестировать ».

0

Да Mate - лучший каркас для гибки. Я использовал в одном приложении, которое имело несколько изменений как с точки зрения графического интерфейса, так и с помощью службы данных. Мне нужно было менять карту событий каждый раз, когда произошли какие-либо изменения.

Mate также имеет реализацию MockService, что делает тестирование легким, а не преимуществом помощника, но приятно иметь его.

1

Я использую (и рекомендую) Swiz framework. Это не так сложно и PureMVC, но он выполняет свою работу. Более того, это контейнер IoC, и мне нравится IoC.

Я никогда не использовал Mate, поэтому я не могу прокомментировать это. Но я рекомендую против Cairngorm. Cairngorm, как говорят, является открытым исходным кодом, но он действительно не поддерживается сообществом. Цикл выпуска также медленный. Я ожидал, что FOREVER для навигационной библиотеки выйдет из бета-версии.

0

Вы должны спроектировать свою собственную инфраструктуру MVC на основе ваших собственных потребностей. Если вы знаете немного шаблонов проектирования, Flex предлагает много возможностей изначально.

Лучшая разработка вашего собственного MVC заключается в том, что он может быть легким или сложным, как вам нужно.

Мой опыт работы с фреймворками заключается в том, что вы в основном должны писать в два раза больше кода, чем без использования фреймворка. Хорошая вещь о структурах заключается в том, что она заставляет вас работать последовательно, но если вы можете работать последовательно, используя шаблоны проектирования, лучшие практики и здравый смысл, я бы предложил не вмешиваться в рамки.

0

Его очень трудно прийти к выводу, какая структура лучше других. В зависимости от характера и сложности опыта участников проекта и команды & предпочтение может быть более подходящим, чем другое в данной ситуации

Я собрал список фреймворков Flex с краткими описаниями и указателями для получения дополнительной информации о них в этом URL. http://practicalflex.blogspot.com/2011/08/list-of-adobe-flex-tools-frameworks.html url может быть полезен любому, кто ищет оценку Flex для своего проекта.

После оценки многих основных фреймворков Flex я нашел структуру Swiz более простой и простой в использовании для нового разработчика. Следовательно, он обеспечивает легкую техническую поддержку & экстенсивности вашего приложения.

0

Я работал над cairngorm и mate frameworks. Я начал работу с фреймворка cairngorm. Хорошо работать, но трудно понять вначале. Он умело обрабатывает события. Вы можете отправлять события из самих классов, и по ним будут учтены командные классы, связанные с каркасом. Существует единый репозиторий для хранения данных, поэтому легко обрабатывать данные. Это одноэлементный класс. Как только вы овладеете каркасом, работать проще. Mate с другой стороны - основа для тегов. Это среда, управляемая событиями, поэтому все события обрабатываются в файле eventmap. Это прослушивание событий, вложение свойств и многое другое из этого класса. Вы можете отправлять события из классов, передавая им экземпляр диспетчера событий фреймворка. В этом случае вам не нужно использовать класс singleton, например cairngorm. Вы можете привязать свойство в классе к представлениям, используя напрямую, используя инъекцию свойств, поэтому не нужно использовать какой-либо одноэлементный класс. В матте все классы и представления свободны от кода рамки, поэтому это развязанная структура. Легко перемещать компоненты из одного места в другое.