RubyAMF-Checklist

AMF ermöglicht es, einen besonders performanten Datenaustausch zwischen einer clientseitigen Flash- und einer Server-Anwendung zu realisieren. Die AMF-Datenpakete sind sehr klein und garantieren auf diese Weise eine geringe Übertragungszeit. Weiterhin wird das Format vom Flash-Player standardmäßig unterstützt, sodass die Serialisierung und Deserialisierung der Datenobjekte schnell und vor allem automatisch vorgenommen wird. Die Konvertierung in das Nachrichtenformat (und zurück zum Objekt) wird vom Flash-Player übernommen und erfordert keine zusätzliche Implementierungen oder Bibliotheken. Serverseitig nimmt ein AMF-Gateway die Client-Anfragen entgegen, konvertiert den Datenstrom in die entsprechenden Datenobjekte und delegiert diese zur gewünschten serverseitigen Objekt-Funktion (im Fall von Rails zu einer Action eines Controllers). RubyAMF ist ein solcher Gateway. Durch die Installation des entsprechenden Plugin in ein Rails-Projekt kann der Gateway eingerichtet werden. Das so genannte Class-Mapping ermöglicht es, dass die Objekte auf der entsprechenden Gegenseite richtig typisiert ankommen. In dem Fall, dass der Datenaustausch funktioniert jedoch das Class-Mapping fehlschlägt, kommen die Daten-Objekte als anonyme Objekte vom Typ Object in der Flash-Anwendung an. Zur Erleichterung der Fehlersuche, hier eine kleine Checkliste.

1. Die Klassen müssen in der RubyAMF-Config-Datei (config/rubyamf_config.rb) für das Mapping registriert werden.

2. Die Datenobjekte in Rails und Flash müssen die gleichen Attribute besitzen. Die Schreibweise in snake_case oder camelCase kann variieren, jedoch muss RubyAMF dazu entsprechend konfiguriert werden.

3. Bei ActiveRecord-Objekten muss die Datenbank-Migration ausgeführt worden sein.

4. Die ActionScript-Klassen der Datenobjekte müssen als RemoteClass registriert sein. Bei der Metatag-Variante ist darauf zu achten, dass [RemoteClass(alias="ObjectAlias")] direkt vor oder über der Klassen-Deklaration steht.

5. Die ActionScript-Klassen der Datenobjekte müssen in das Flash/Flex-Projekt importiert werden.

6. Die Klassen müssen in den ActionScript-Code importiert werden (!!!).

Blitzschneller Rails-Flash-Datenaustausch via AMF

AMF steht für Action Message Format und bezeichnet ein Binärformat zur Serialisierung von ActionScript-Objekten. Das Format wird nativ vom Flash-Player unterstützt und ermöglicht einen besonders performaten Remote-Datenaustausch zwischen einer Flash- und einer Backendanwendung. Serverseitig wird ein AMF-Gateway benötigt, der sie Serialisierung und Deserialisierung des Datenstroms vornimmt und die entsprechende Objektfunktion aufruft. Um diese Art der Datenübertragung mit einem RubyOnRails-Backend nutzen zu können, steht RubyAMF unter einer leicht modifizierten MIT-Lizenz als Gateway-Plugin zur Verfügung.

Im aktuellen Railsway-Magazin (Ausgabe 06.2009) habe ich einen Artikel veröffentlicht, in dem der praktische Einsatz von RubyAMF beschrieben wird. Insbesondere wird auf das Class-Mapping eingegangen. Durch das Class-Mapping-Verfahren ist es möglich, dass Flash-Datenobjekte direkt als ActiveRecord-Objekte im Rails-Backend zur Verfügung stehen und weggespeichert oder aktualisiert werden können. [Read more →]

Routing & RESTful Rails

Dieser Artikel ist eine Zusammenfassung des Vortrages “Routing and REST”, den ich an der TFH-Berlin in der Lehrveranstaltung RUBY ON RAILS gehalten habe. Es wird eine kleine Einführung in die Prinzipien REST-konformer Webanwendungen gegeben. Weiterhin wird kurz darauf eingegangen, wie REST im Open-Source-Web-Framework Ruby On Rails umgesetzt wird.

[Read more →]