Oftmals müssen Daten lokal abgespeichert werden. Sie kennen sicher auch zahlreiche Beispiele wie Caching, Speichern von Einstellungen und andere. Bei Windows Phone gibt es Pro-Applikation-Dateisysteme – isolierte Bereiche, die jeweils einer Anwendung zur Verfügung stehen. Diese werden auch als „Isolated Storage“ bezeichnet.
Objekte in den Isolated Storage speichern
Wenn Sie lediglich Objekte im Isolated Storage abspeichern wollen, bietet die Klasse IsolatedStorageSettings eine gute Möglichkeit dafür. In Listing 1 sehen Sie ein Beispiel für die Verwendung. Das jeweilige Objekt wird dabei mittels DataContractSerializers in den Isolated Storage serialisiert. Sollten beim Speichern Fehler auftreten, so ist Ihre Klasse nicht serialisierbar – beachten Sie die Tipps aus der MSDN-Dokumentation [1], um das Problem zu beheben.
Listing 1: Objekte im Isolated Storage
var lastViewed = IsolatedStorageSettings.ApplicationSettings["last"] as Comic; if (lastViewed != null) { // letztes comic anzeigen } ... IsolatedStorageSettings.ApplicationSettings["last"] = currentComic; IsolatedStorageSettings.ApplicationSettings.Save();
Mit Dateien im Isolated Storage arbeiten
Reichen Ihnen einzelne Objekte nicht? Wollen Sie lieber gesamte Dateien mit Unterverzeichnissen abspeichern? Auch dafür gibt es eine Möglichkeit im Isolated Storage. Das Tor zum Dateisystem ist die Klasse IsolatedStorageFile. Einmal geöffnet, können Sie ganz normale Verzeichnisse anlegen und über Streams auf Dateien in diese zugreifen. Somit steht der Weg für das Cachen ganzer Videos, Bilder etc. frei. Listing 2 zeigt die Anlage einer neuen Datei und den Zugriff auf diese.
Listing 2: Dateien im Isolated Storage
var fs = IsolatedStorageFile.GetUserStoreForApplication(); fs.CreateDirectory("cache"); using (var stream = fs.CreateFile("cache/video1.wmv")) { stream.Write(..); }
Hilfreich sind dabei auch die Klassen aus dem Namespace System.IO, wie zum Beispiel der StreamReader und StreamWriter. Übrigens: Obwohl jede Applikation einen separaten Speicherbereich hat, erfolgt die Verteilung des Speicherplatzes nach einem „First come first serve“-Prinzip. Eine Applikation kann also auch den kompletten Speicherplatz des Gerätes belegen. Mit der AvailableFreeSpace-Eigenschaft auf dem IsolatedStorageFile kann der freie Speicherplatz abgefragt werden.
Deinstallation und Updates
Was passiert mit dem Speicherbereich der eigenen Anwendung im Falle von Deinstallation und Updates? Wenn sich die Benutzerin entscheidet, die App zu deinstallieren, wird auch der zugehörige Speicherbereich gelöscht. Anders sieht dies bei einem Update aus. Aktualisieren Sie als Hersteller die Anwendung, so bleibt der Speicherbereich erhalten. Falls sich Ihr internes Dateiformat von einer Version zur anderen ändert, müssen Sie beim ersten Start der neuen Version nach bereits bestehenden Dateien im Isolated Storage suchen und diese konvertieren.
Fazit: Der Isolated Storage ist ein Dateisystem, das es jeder Applikation erlaubt, isoliert Daten abzulegen. Diese bleiben über die Laufzeit der Anwendung erhalten und gehen lediglich bei der Deinstallation verloren. Die Grenze für den Speicherplatz ist ausschließlich durch die Hardware des Phones limitiert.