[DEV][Win8] Settings Speichern? Settings Speichern!
Hier der nächste Beitrag meiner Blogserie: Blogserie- Mein Leben mit XAML
Eins der Paradigmen bei der App Programmierung ist/sollte sein, dass der User über mehrere Devices eine gleichbleibende User-Experience hat. Das bedeutet, dass Settings einer App mit dem Benutzer mitwandert und nicht isoliert auf ein Device Anwendung finden.
Dazu ist es notwendig, dass Settings über die Cloud gespeichert und wieder abgerufen werden können.
Damit es für Entwickler möglichst einfach ist die Settings mitwandern zu lassen, wurde in dem WinRT Modell von Windows 8 eine sehr einfache API implementiert, welche es ermöglicht über Skydrive und damit die verwendete Microsoft ID die Settings mitwandern zu lassen:
Hierzu wird lediglich ein Key-Value Pair benötigt, welches an die entsprechende API übergeben wird:
ApplicationData.Current.RoamingSettings.Values[key] = value;
Mehr ist nicht zu tun! Einfach “Fire&Forget” und beim nächsten Laden der Settings auf die Values zugreifen. Das war es - wirklich! Klingt einfach, oder?
Einen Haken gibt es natürlich: In den RoamingSettings können natürlich nur wenige Daten gespeichert werden. Für klassisches “Caching” von Bildern und anderen Daten ist es sinnvoller dies lokal zu machen, hier schreibe ich einfach Serialisierte Daten in ein XML File:
StorageFile sf = await ApplicationData.Current.LocalFolder.CreateFileAsync(key + ".xml", CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(sf, value);
Und entsprechend das Auslesen:
IStorageFile isf = await ApplicationData.Current.LocalFolder.CreateFileAsync(key + ".xml", CreationCollisionOption.OpenIfExists);
value = await Windows.Storage.FileIO.ReadTextAsync(isf);
Für den Nutzer ist es eine tolle “Experience”, wenn die Settings mit ihm/ihr mitwandern und daher kann ich jedem App-Entwickler nur empfehlen, seine Settings zu Roamen.
Vgl. hierzu auch den entsprechenden MSDN Artikel zu dem Thema.
Bis zum nächsten Post
-Stephanus