Flash, Flex und der ganze Rest
Typsicheres speichern in Local Shared Objects
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
| Artikel drucken | Dieser Beitrag wurde von falk am 9. November 2008 um 19:12 veröffentlicht und unter Flex abgelegt. Du kannst allen Antworten zu diesem Beitrag durch RSS 2.0 folgen. Du kannst eine Antwort schreiben oder einen Trackback von deiner eigenen Seite hinterlassen. |
vor 1 Jahr
can you post the code plz?
vor 1 Jahr
It’s already online. Please click on the link on the bottom of this article to open the example applications. Then you can use [Right click] > “View Source” to download the sources.
vor 1 Jahr
Thanks!
Is it also working for Remote Shared Objects?
vor 1 Jahr
Yes, that’s what it was made for.
Also you can use ObjectUtil.copy(yourObjectInstance) on a any class instance that has an [RemoteClass] meta tag set to create a new (type safe) copy of that class instance.
Without that, ObjectUtil.copy(yourObjectInstance) would create a generic object with all member variables from the copied class instance as properties of the copy. Both ways have their pros and cons.