Süßer als vom verbotenen Baum?

10 Tipps für Windows Phone Mango Tipp 4 Persistenz von Daten im Isolated Storage
Kommentare

Einst galt sie als Speise der Götter – „Mangifera indica“ so der lateinische Name der Frucht, die namensgebend für die neueste Version von Windows Phone ist. In dieser Artikelserie erfahren Sie Tipps und Tricks, die die Entwicklung Ihrer Windows-Phone-7.5-Applikation erleichtern sollen. Beginnen wollen wir mit dem Bauen von Standort-abhängigen Anwendungen.

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.

DI Max Knor ist Technologieberater für Softwareentwicklung. Er betreut als Technical Global Alliance Manager bei Microsoft Corp. eine Hand voll internationaler ISVs im Bereich Retail-Software. Max hält Vorlesungen zu Cloud Computing, Softwarearchitekturen und Webentwicklung an zwei Fachhochschulen.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -