Blog

Refactoring einer Flex-Anwendung aus einer bestehenden Adobe AIR-Codebasis

ShriKant Vashishtha

Aktualisiert Oktober 23, 2025
3 Minuten
Adobe AIR ist eine großartige Technologie zur Bereitstellung plattformunabhängiger Desktop-RIA-Anwendungen. Vorbei sind die Zeiten, in denen das Windows-Betriebssystem auf dem Desktop-Markt allgegenwärtig war. Aus diesem Grund gilt Adobe AIR als die Zukunft der Desktop-Anwendungen. Desktop-Anwendungen sind auf dem Vormarsch, da sie im Vergleich zum Browsermodus reichhaltige Funktionen auf effiziente/optimale Weise bereitstellen können. Die Kehrseite der Medaille ist, dass im Zeitalter des Wettbewerbs bei Softwareprodukten mit zwei großen Auswahlmöglichkeiten und großem Zeitdruck der Endbenutzer vielleicht etwas faul ist, die Anwendung herunterzuladen und zu installieren, nur um sich die Funktionen der Anwendung anzusehen. Andererseits kann man mit browserbasierten Anwendungen schnell experimentieren. Was den Funktionsumfang und die Leistungsfähigkeit angeht, so ist eine browserbasierte Anwendung zwar nur eine Teilmenge einer Desktop-Anwendung, bietet aber dennoch die meisten Funktionen für die meisten schnellen Benutzer.In unserem Projekt hatten wir eine ähnliche Situation, in der wir eine bestehende AIR-Anwendung refaktorisieren mussten, um Unterstützung sowohl für Browser- als auch für AIR-Versionen zu bieten. Um diese Aufgabe zu bewältigen, fanden wir einen guten Artikel, der uns einen grundlegenden architektonischen Ansatz lieferte.Wir begannen mit dem Refactoring des bestehenden AIR-Projekts (ProjectAIR) in zwei weitere Projekte, SharedProject und ProjectWeb (Webprojekt). SharedProject enthielt den gemeinsamen Code von ProjectAIR und ProjectWeb. Adobe AIR-basierte Anwendungen verwenden Windows, das Dateisystem, SQL-Operationen usw., die durch ihre Gegenstücke in der Web-Version ersetzt werden mussten. Wir abstrahierten diese Funktionalitäten mit Hilfe von ActionScript (AS3) Schnittstellen. Mit anderen Worten: Wo immer AS3-Code auf unterschiedliche Weise für die AIR- und die Web-Version implementiert werden musste, haben wir eine gemeinsame Abstraktion in Form von AS3-Schnittstellen identifiziert und AIR- (in ProjectAIR) und Web- (in ProjectWeb) basierte Implementierungen bereitgestellt. Wir haben Spring ActionScript, ein ActionScript-Framework für die Injektion von Abhängigkeiten, verwendet, um die entsprechenden AS3-Schnittstellenimplementierungen auf der Grundlage der von uns verwendeten Anwendungen zu injizieren (unterschiedliche applicationContext.xml für ProjectAIR und ProjectWeb). Da die AIR-Version in der Lage ist, mit Dateien (z. B. Bildern) zu arbeiten, mussten wir eine ähnliche Funktionalität auch in der Web-Version bereitstellen. In Flash 9 war dies einfach nicht möglich, da es eine Verletzung der Sandbox-Sicherheit darstellt. Vor kurzem wurde mit Flash 10 eine neue Funktion eingeführt, mit der Dateien im Flash Player gelesen und geschrieben werden können, ohne dass etwas an den Server zurückgeschickt werden muss. Wir haben das kürzlich eingeführte Flex 3.2 SDK verwendet, um auf diese Funktionen zuzugreifen. Anstatt die Daten im Dateisystem zu speichern (was in AIR möglich ist), haben wir SharedObject (Flex-Cookie) verwendet, um die Benutzerinformationen auf dem Desktop zu speichern. Eines der größten Probleme tritt auf, wenn Sie eine Ansicht (MXML) wiederverwenden müssen. Für einige Ansichten, bei denen dies einfach nicht möglich war, haben wir verschiedene Ansichten erstellt (jeweils eine für die Web- und die AIR-Version). Für die meisten Ansichten konnten wir sie jedoch umstrukturieren und wiederverwenden. Wir haben die Ansichten umstrukturiert und alle AIR-spezifischen Funktionen entfernt. Sie wurden zur Basisversion der Ansicht, die entweder direkt in der Webversion verwendet werden konnte oder für die Web- und AIR-Version erweitert werden musste. Wir haben eine Nomenklatur geschaffen, die sich an AIR und Web anlehnt (z.B. InvoiceViewAIR.mxml und InvoiceViewWeb.mxml, die von InvoiceView.mxml abgeleitet sind). Zum Beispiel könnte InvoiceViewAIR.mxml (erweitert von InvoiceView.mxml) etwa so aussehen.



	
		
        

Mithilfe der oben genannten Techniken konnten wir die Anwendung schließlich sowohl in AIR als auch im Webbrowser ausführen, und das war ein wunderbarer Moment für uns.

Verfasst von

ShriKant Vashishtha

Contact

Let’s discuss how we can support your journey.