2008-08-31 12 views
33

Obecnie używam i cieszę się przy użyciu środowiska Flex MVC PureMVC. Słyszałem kilka dobrych rzeczy o Cairngormie, który jest wspierany przez Adobe i ma pierwsze miejsce na rynku. I jest nowy gracz o nazwie Mate, który ma dużo szumu.Flex MVC Frameworks

Czy ktoś próbował dwóch lub trzech z tych struktur i wyrobił sobie opinię?

Dzięki!

Odpowiedz

48

Mate to mój wybór. Pierwszym i najważniejszym powodem jest to, że jest całkowicie nie rzucający się w oczy. Mój kod aplikacji nie ma zależności od frameworka, jest wysoce odsprzęgnięty, możliwy do ponownego użycia i testowalny.

Jedną z najładniejszych funkcji Mate jest deklaratywna konfiguracja, w zasadzie podłączasz swoją aplikację do używania znaczników w tak zwanej mapie zdarzeń - w zasadzie listę wydarzeń generowanych przez aplikację i czynności, które należy wykonać, gdy występują one. Mapa zdarzeń daje dobry przegląd tego, co robi aplikacja. Mate używa własnego mechanizmu zdarzeń Flex, nie wymyśla własnego, jak większość innych frameworków. Możesz wysłać zdarzenie z dowolnego miejsca w hierarchii widoku i automatycznie umieścić je w ramce, zamiast mieć bezpośrednią linię, taką jak Cairngorms CairngormEventDispatcher lub system powiadomień PureMVC.

Mate wykorzystuje również formę zastrzyku zależności (wykorzystując wiązania), która umożliwia połączenie modeli z widokami bez znajomości drugiego. Jest to prawdopodobnie najpotężniejsza cecha architektury.

Moim zdaniem żadna z innych frameworku aplikacji Flex nie znajduje się w pobliżu Mate. Jednak są to rywale i dlatego uważam je za mniej użyteczne:

PureMVC aktywnie zaprzecza wielu korzyściom Flex (na przykład wiązaniom i bulgocznościom zdarzeń), aby struktura była przenośna - podwaja Cel w moim przekonaniu. Jest również nadprogramowy i tak inwazyjny, jak to tylko możliwe. Każda część aplikacji zależy od architektury. Jednak PureMVC nie jest straszny, po prostu nie bardzo pasuje do Flex. Alternatywą jest FlexMVCS, aby uczynić PureMVC bardziej odpowiednim dla Flex (niestety nie ma jeszcze dokumentacji, tylko źródło).

Cairngorm to pakiet anty-wzorców, które prowadzą do aplikacji ściśle powiązanych ze zmiennymi globalnymi. Nuff powiedział (ale jeśli jesteś zainteresowany, here are some more of my thoughts i here too).

Swiz to framework inspirowany przez wiosenne ramy dla Java i Cairngorm (starając się nadrobić najgorsze części tego ostatniego). Zapewnia pojemnik z wtryskiem zależnym i używa metadanych do automatycznego łączenia zależności. Jest to interesujące, ale trochę dziwaczne w tym, że unika się globalnych zmiennych Cairngorma, używając zastrzyku zależności, ale potem używa zmiennej globalnej do centralnego wysyłania zdarzeń.

To są te, które próbowałem lub badałem. Jest kilka innych, o których słyszałem, ale żaden z nich nie jest powszechnie używany. Mate i Swiz zostali zaprezentowani podczas niedawnej konferencji 360 | Flex i są dostępne filmy wideo (the Mate folks have instructions on how to watch them)

+0

Dobra analiza i ogólnie się z tobą zgadzam. Należy zauważyć, że centralny dyspozytor w Swiz jest opcjonalny i naprawdę potrzebny tylko wtedy, gdy masz zdarzenie, na które wiele widoków/komponentów wymaga powiadomienia, takich jak logowanie, wylogowanie itp. –

+0

Dawno minęło, ale dzięki za przemyślaną odpowiedź. Byłem już zaangażowany w PureMVC w tym czasie. I znalazłem kilka plusów (czyste oddzielenie warstw) i minusów (ilość kodu, testowalność i system powiadomień). Na podstawie twoich opinii i innych, właśnie rozpocząłem nowy projekt z Mate. – Rydell

+0

Czułem się dokładnie tak samo, gdy zacząłem szukać w Cairngorm. Pierwszą rzeczą, o której mi powiedziano, jest ModelLocator, który śledzi modele i stan aplikacji? To zadzwoniło w niektórych dzwonkach, zwłaszcza w samouczku Wprowadzenie. – seanmonstar

0

Należy pamiętać, że Cairngorm jest ramą sponsorowaną przez Adobe, a teraz hostowaną na opensource.adobe.com. Zauważ też, że jest to obecnie najbardziej płodny programista spośród deweloperów.

Jeśli znasz Cairngorm i szukasz pracy, nie popełnisz błędu.

1

Obecnie pracujemy nad implementacją MVCS w ramach Spring ActionScript. Wykorzystuje pełną moc kontenera Inversion of Control, dzięki czemu masz scentralizowane zarządzanie zależnościami i możesz łatwo wymieniać się rzeczami. Nie jest to zbyt nakazowe w sposobie wykonywania czynności, ale zapewnia bardzo elastyczną infrastrukturę.

Jeśli jesteś nowym wiosennym ActionScript i MVCS, mam wstępne posta na moim blogu: http://www.herrodius.com/blog/158

5

Widziałem tego rodzaju dyskusji wiele razy. Zwykle zaczynają się od WHICH Flex Framework, którego używasz. Niewiele osób zadaje pytanie: DLACZEGO potrzebujesz nawet ram na platformie Flex.

Nie jestem zwolennikiem korzystania z frameworka MVC (Cairngorm, PureMVC) w kodzie Flex. Mate jest lepszym kandydatem. Przynajmniej jest to łatwe do zrozumienia i nie jest nachalne. Wolę używać ulepszonych komponentów do wyboru z karty. Stworzyliśmy i udostępniliśmy kilka z nich (zobacz clear.swc w Clear Toolkit pod numerem http://sourceforge.net/projects/cleartoolkit/.

Pierwszy rozdział naszej nadchodzącej książki O'Reilly "Enterprise Development with Flex" zawiera szczegółowe porównanie kilku Flex ramy. http://my.safaribooksonline.com/9780596801465

+0

Dziękujemy za dodanie jedynej rozsądnej odpowiedzi - nie korzystaj z frameworka. W końcu doszło do zdrowego rozsądku. Jeśli chcesz zamienić proste rozwiązanie w niewiarygodnie trudny i nadęty stos kodu spagetti, to ramy są dla ciebie. Jeśli wolisz przejrzysty, czysty kod, który działa i jest łatwy w pisaniu i utrzymywaniu, sugeruję, aby omijać wszystkie frameworki. Sądzę, że jest to potwierdzone przez fakt, że najbardziej popularną ramą w tej dyskusji jest "najmniej inwazyjna". Spróbuj zerowej ingerencji, jest to bardzo odświeżające. – chris

0

MATE jest sposobem go.A ram który robi to, co powinien zrobić ramy De-coupled Architecture Proste Small print foot sprawność

0

Jakbym miał moje wątpliwości na tych MVC. schematy (Mate, Cairgnorm, etc ...) ze sposobem, w jaki implementują e mapy wentylacyjne i kontrolery zdarzeń, przypomina mi zbyt dużo wxWidgets i innych tego typu zestawów narzędzi GUI.

Jednak byłoby naprawdę fajnie, gdyby Flex lub jeden z tych frameworków MVC używał paradygmatu Signal/Slots, który oferuje Qt.

0

Polecam używać MATE do tworzenia wielkich i skomplikowanych projektów, takich jak inne struktury, Mate adresy wspólnych problemów architektonicznych w Flex, takich jak obsługa zdarzeń, wiązanie danych i przetwarzanie asynchroniczne, ale najważniejszym celem jest to, że jest to tylko tag na podstawie tego, że jest bardzo łatwy w użyciu w naszych aplikacjach Flex.

7

Zapoznaj się z Robotlegs.

"Zapewnia klej, którego aplikacja potrzebuje, aby łatwo funkcjonować w sposób odsprzężony Dzięki wykorzystaniu zautomatyzowanego wtrysku opartego na metadanych, Robotlegs usuwa kod w aplikacji, promując luźne sprzężenie i unikając używania Singletonów i statyki w ramach programu Robotlegs możesz pomóc ci napisać kod, który jest wysoce testowalny. "

+1

Ponad 1 głos na roboty, Cairngorm był jednym z gorszych frameworków, jakie kiedykolwiek stosowałem, szczególnie z powodu nadużywania singletonów. – Eran

0

Tak Mate to najlepsza platforma dla flexu. Użyłem w jednej aplikacji, która miała kilka poprawek zarówno pod względem GUI, jak i usługi danych back-end. Potrzebowałem tylko zmienić mapę zdarzeń za każdym razem, gdy były jakieś zmiany.

Mate ma również implementację MockService, która sprawia, że ​​testowanie nie jest łatwe, ale przyjemne.

1

Używam (i polecam) framework Swiz. To nie jest tak skomplikowane i PureMVC, ale wykonuje to zadanie. Co więcej, jest to kontener IoC i lubię IoC.

Nigdy nie użyłem Mate, więc nie mogę tego komentować. Ale polecam przeciwko Cairngormowi. Mówi się, że Cairngorm jest open source, ale naprawdę nie jest dobrze obsługiwany przez społeczność. Cykl ten jest również powolny. Czekałem FOREVER, aż Biblioteka nawigacyjna wyjdzie z wersji beta.

0

Powinieneś zaprojektować własne "ramy" MVC w oparciu o własne potrzeby. Jeśli znasz trochę wzorców projektowych, Flex ma wiele do zaoferowania natywnie.

Najlepszą rzeczą w projektowaniu własnego MVC jest to, że może być lekki lub złożony, tak jak potrzebujesz.

Moje doświadczenie w zakresie frameworków polega na tym, że zasadniczo trzeba napisać dwa razy więcej kodu niż bez korzystania z frameworka. Dobrą rzeczą w frameworkach jest to, że zmusza cię do pracy w spójny sposób, ale jeśli możesz pracować w spójny sposób, wykorzystując wzorce projektowe, najlepsze praktyki i zdrowy rozsądek, proponuję trzymać się z dala od frameworków.

0

Bardzo trudno jest dojść do wniosku, które ramy są lepsze od innych. W zależności od charakteru i złożoności projektu i doświadczenia członków zespołu: & preferencje jeden może być bardziej odpowiedni niż inne w danej sytuacji

Sporządziłem listę Flex Framework z krótkimi opisami i wskaźnikami, aby uzyskać więcej informacji na ich temat w tym URL. http://practicalflex.blogspot.com/2011/08/list-of-adobe-flex-tools-frameworks.html adres URL może być pomocny dla każdego, kto chce ocenić ramy Flex dla swojego projektu.

Po przeanalizowaniu większości frameworków Flex odkryłem, że struktura Swiz jest prostsza i łatwiejsza w obsłudze dla nowego programisty. Dzięki temu zapewnia łatwą konserwację & rozszerzalność aplikacji.

0

Pracowałem nad frameworkami cairngorm i mate. Zacząłem od struktury cairngorm. Dobrze jest pracować, ale na początku trudno to zrozumieć. Obsługuje wysyłkę zdarzeń sprytnie. Możesz wysyłać zdarzenia z samych klas, a zajmie się nimi szkieletowa klasa poleceń. Istnieje jedno repozytorium do przechowywania danych, dzięki czemu można łatwo obsługiwać dane. Jest to klasa singleton. Po opanowaniu struktury praca jest łatwiejsza. Mate z drugiej strony jest oparta na tagach. Jest to framework sterowany zdarzeniami, więc wszystkie zdarzenia są obsługiwane w pliku zdarzenia. Odsłuchuje zdarzenia, wtrysk własności i wiele innych rzeczy z tej klasy. Możesz wysyłać zdarzenia z klas, przekazując je instancji narzędzia do rozsyłania zdarzeń. Nie musisz w tym celu używać klasy singleton, takiej jak cairngorm. Możesz powiązać własność w klasie z widokami korzystając bezpośrednio z wtrysku właściwości, więc nie musisz używać żadnej klasy singleton. W katarze wszystkie klasy i widoki są wolne od kodu frameworku, więc jest to odsprzęgnięta struktura. Łatwo jest przenosić komponenty z jednego miejsca na drugie.