Effektive Anwendungsentwicklung mit Flex und PureMVC

Werkzeuge  –  Kommentare

Um das Model-View-Controller-Entwurfsmuster (MVC) erfolgreich in Flex-Anwendungen einzusetzen, kann der Entwickler auf viele Frameworks zurückgreifen. Dazu zählt PureMVC, das durch seine Sprachunabhängigkeit und große Flexibilität die Entwicklung auch von komplexen Anwendungen verspricht – wenn der Entwickler die allerdings hohe Einstiegshürde für PureMVC in Kauf genommen hat.

In den letzten Jahren hat die Flash-Plattform eine rasante Entwicklung zurückgelegt. Durch das Flex-Framework und ActionScript 3 ist Adobe der Sprung in Richtung von Rich Internet Applications (RIAs) gelungen. Setzten Webdesigner Flash früher fast ausschließlich für die Entwicklung von multimedialen Werbemitteln wie Bannern und Microsites ein, lässt es sich in Verbindung mit Flex und Adobes AIR (Adobe Integrated Runtime) für komplexe Browser- und Desktop-Lösungen nutzen.

Für viele Flash-Entwickler spielt mittlerweile das Thema Anwendungsarchitektur eine übergeordnete Rolle, es kann über den Erfolg oder Misserfolg eines Projekts entscheiden. Ein bewährter Ansatz, eine Anwendung zu strukturieren, ist das Model-View-Controller-Entwurfsmuster (MVC), das die Applikation in drei voneinander unabhängige Logik-Schichten trennt:

  • Model: Die Datenschicht hält alle der Anwendung zugrunde liegenden Daten. Das können sowohl Texte als auch Zustände einzelner Steuerelemente sein.
  • View: Die Präsentationsschicht enthält alle dem Benutzer dargestellten Elemente. Dazu zählt neben der Visualisierung von Text, Bild und Ton die Anzeige von Eingabeelementen wie Buttons und Textfeldern.
  • Controller: Für die Geschäftslogik der Anwendung zuständig ist die Steuerungsschicht. Sie manipuliert durch Benutzereingaben die Datenschicht oder steuert anwendungsübergreifende Aufgaben.

In der Regel lässt sich jede Flex-Anwendung in Schichten unterteilen. Sind sie allerdings nicht voneinander getrennt angelegt, kann die Wartung und Weiterentwicklung schnell unübersichtlich, aufwendig und teuer werden. Durch die einfache Verwendung der Flex-Komponenten und die damit gesteigerte Produktivität ist die Versuchung groß, die Trennung der Programmlogik zu vernachlässigen und "drauf los zu entwickeln".

Dabei bietet Flex gute Voraussetzungen, die drei Schichten voneinander zu trennen. Das liegt zum einen an der umfangreichen Komponentenbibliothek, die sich für die Erstellung der Views eignet. Zum anderen kann das Flex-eigene "Data Binding" die Komponenten mit der Datenschicht direkt verknüpfen und das Befüllen beziehungsweise das Aktualisieren der Präsentationsschicht automatisieren. Eine vereinfachte Trennung der Anwendungslogik könnte sich mit Flex wie in Abbildung 1 gestalten.

Trennung der Anwendungslogik in Flex (Abb. 1 )
  1. Der Benutzer löst in der View eine Aktion aus (zum Beispiel Button-Klick).
  2. Der Controller greift die Aktion auf und wandelt sie in eine Manipulation der Datenschicht um.
  3. Das Data Binding aktualisiert die View.

Um das MVC-Muster erfolgreich in Anwendungen einzusetzen, kann der Entwickler auf eine Reihe MVC-Frameworks zurückgreifen. Dazu zählen unter anderem Cairngorm, Mate und PureMVC. Während Cairngorm [1] durch sein Alter und als De-facto-Adobe-Framework wohl die größte Verbreitung genießt, darf PureMVC als eine interessante Alternative für die MVC-basierte Flex-Entwicklung gelten.

Durch seine Sprachunabhängigkeit hebt sich PureMVC deutlich von Cairngorm ab. Es nutzt keinerlei Flex- oder Flash-spezifische Klassen und ließ sich deswegen für Java, C#, Objective-C, Ruby und einige andere Sprachen portieren. Ist das Framework erst erlernt, lassen sich nach bekanntem Muster Programme für Silverlight, iPhone oder andere Plattformen schreiben. Ein weiterer Vorteil ist der in PureMVC verhältnismäßig große Spielraum an Kommunikation der einzelnen Logikschichten. Verwendet man Flex/ActionScript, bedeutet das, dass die Kommunikation vom Model zur View nicht zwingend mit Data Binding erfolgen muss, wie es etwa bei Cairngorm der Fall ist. Durch den Freiraum für den Entwickler ist die Einstiegshürde für PureMVC allerdings als höher einzuschätzen als bei anderen Frameworks. Dafür erweitert PureMVC gerade durch seine Flexibilität seinen Einsatzbereich um die Entwicklung von komplexen Anwendungen.

Warum PureMVC?

Der Initialaufwand bei einer PureMVC-Anwendung ist wesentlich höher als bei einer ohne PureMVC. Das liegt im Wesentlichen daran, dass der Entwickler beim Aufsetzen einer Applikation einem bestimmten Muster folgen muss. Während der Entwicklung ist darum in der Regel mehr Code zu schreiben, als das ohne Framework der Fall wäre. Doch erreicht ein Projekt eine kritische Größe, relativiert sich der Mehraufwand schnell. Unterm Strich bedeutet das einen insgesamt geringeren Zeitaufwand durch weniger Korrekturen im Code, optimierte Arbeit im Team, eine übersichtlichere Programmstruktur und dadurch eine höhere Qualität des Ergebnisses. Außerdem lässt sich der dem Framework zugrunde liegende Mehraufwand durch den sinnvollen Einsatz von Tools wie Ant oder Code Templates in Eclipse kompensieren.