Das Cairngorm-Framework basiert auf dem MVC-Konzept und ist eine Kombination von verschiedenen Design Patterns. Die Basis bilden dabei das Value Object und Model Locator-Pattern, die um weitere, wie z.B. Command-, Front-Controller-, Delege-Pattern, u.a., ergänzt werden.
Das Framework hilft Dir dabei, Deine Applikation gut zu organisieren. Damit kannst Du nach gleichem Muster auf das User Verhalten (Mouse-, Button-Clicks) mit Hilfe von Cairngorm-Events und -Commands reagieren, die Daten auf Clientseite übersichtlich an einem Ort, dem ModelLocator, halten und die Server-Interaktion ebenfalls an einem Ort, dem Service-Locator, mit Hilfe von Delegate-Klassen managen.
Klingt vielleicht etwas theoretisch, darum hier ein kleines Beispiel für den Ablauf im Cairngorm-Framework, wenn z.B. in einer WetterApplikation ein User die Wetterdaten für morgen anzeigen lassen will:
- User möchte neue Wetterdaten sehen und klickt deshalb auf den entsprechenden Button “Wetterdaten für morgen anzeigen”
- der Button löst ein Cairngorm-Event “ZeigeNeueWetterdatenEvent” aus
- da dieses Event über den FrontController mit dem Command “ZeigeNeue WetterdatenCommand” gekoppelt ist, wird jetzt dieser Command über die execute-Methode ausgeführt
- d.h. der Command gibt mit Hilfe einer Delegate-Klasse eine Anfrage an den Server ab. Das kann ein HTTP-, Webservice oder RemoteObject sein. Die Serverkommunikation wird an einem zentralen Ort, dem ServiceLocator, beschrieben.
- Ist ein Result vom Server da, erhält der Command, welcher ja auf Ergebnisse wartet, das Result vom ServiceLocator über die Delegate-Klasse und kann darauf reagieren
- d.h. der Command legt jetzt die neuen WetterDaten an einem zentralen Ort, dem ModelLocator ab
- durch das Binding vom ModelLocator und den Views (beruht auf das geniale Binding innerhalb von Flex) werden die neuen Daten sofort im View aktualisiert.
Und hier noch eine paar Links
Adobe’s Flex Artikel im Flex Developer Center:
Developing Flex RIAs with Cairngorm Microarchitecture – Teil 1 bis 6
Alex Uhlmanns Beispiele:
Cairngorm 2 (for Flex 2) – Simple Sample Applications
Schönes Cairngorm-Diagramm bei corbell.com:
Cairngorm Flow Chart (*.pdf)