SharedObjects (Local SharedObjects) können aud vielfältige Weise benutzt werden, um Daten auf dem Rechner eines Users abzulegen. Meist handelt es sich dabei um einfache Statusinformationen oder ein paar Settings. Eigentlich sind SharedObjects aber dafür gedacht, es verschiedenen Anwendungen aus einer Domain zu ermöglichen Daten untereinander auszutauschen.
Verständlich aber ärgerlich ist dabei, daß eine Anwendung zwar sämtliche Datentypen erst mal in das local SharedObject (LSO) speichern kann, die lesende Anwendung jedoch bei komplexen Datentypen jedoch die gesamte Struktur nur als Typ „Object“ interpretiert. Beim lesen der Daten muss man sich folglich mit untypisierten Objekten herumschlagen oder diese wieder mittels einer parsing-Routine in korrekte komplexe Datentypen umwandeln.
Das ist jedoch nicht nötig, wenn man diese komplexen Datentypen mit zuästzlichen Meta-Informationen versieht. Das funcktioniert genau so wie beim Austausch von Daten mit einem Webservice oder einem Flash-Media-Server. Die betreffenden Klassen bekommen einfach in ihrer Klassendefinition ein Metatag [RemoteClass(alias="de.aboutflash.vo.MyType")]
mit einem Alias. In der Zielanwendung muss man nun nur noch mittels registerClassAlias
dieses Alias auf eine entsprechende Klasse mappen.
flash.net.registerClassAlias("de.aboutflash.vo.MyType", de.aboutflash.vo.MyType);
Ab sofort kann die lesende Anwendung diese Datentypen wieder so interpretieren wie die Schreibende.
Ich habe dazu ein kleines Beispiel angelegt, welches ihr euch hier anschauen könnt.
Beispielanwendungen: normale vs. typsichere Local SharedObjects