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)
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. –
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
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