App-Datenspeicher (ApplicationData)

Meine neue WebSite finden Du jetzt unter https://AttilaKrick.com.

Der App-Lebenszyklus sieht vor das eine App nicht permanent im Arbeitsspeicher gehalten wird. Sollen jedoch Benutzer- und Anwendungsdaten erhalten bleiben so müssen diese in einem nicht flüchtigen Speicher abgelegt werden. Apps können diese Daten lokal, servergespeichert und temporär in den Anwendungsdaten-Speicher schreiben.

Sollte die App deinstalliert werden, werden die lokalen Anwendungsdaten auch gelöscht soweit sie nicht explizit außerhalb z.B. in „Eigen Dateien“ gespeichert wurden.

Greift die Anwendung nicht innerhalb von 30 Tage auf die servergespeicherten Daten zu werden diese in der Cloud gelöscht.

Der Benutzer kann die temporären Anwendungsdateien durch das Programm Cleanup aufräumen.

Jede App besitzt einen Speicher pro Benutzer für die Anwendungsdaten. Die Dateien werden ins Dateisystem geschrieben. Sie haben jedoch keinen direkten Zugriff auf diesen Daten, daher ist der klassische Pfad uninteressant.

Lokal Der lokale Datenspeicher liegt auf dem jeweiligen Gerät unter:

ApplicationData.Current.LocalSettings

ApplicationData.Current.LocalFolder

Roaming Der servergespeicherte Datenspeicher steht auf allen Geräten des Benutzers zur Verfügung unter:

ApplicationData.Current.RoamingSettings

ApplicationData.Current.RoamingFolder

Temporory Der temporäre Dateispeicher liegt lokal und kann jederzeit vom System gelöscht werden:

ApplicationData.Current.TemporaryFolder

Dem Speicher können einfache WinRT basierende Datentypen (http://goo.gl/wVDph) zugewiesen werden oder von diesen Typen sogenannte Verbundeinstellung oder verschachtelte Einstellung.

Order oder Schlüsseltiefe dürfen 32 nicht überschreiten.

Es gibt keine Größenbeschränkung für das lokale Datenvolumen.

Das Cloud-Datenvolumen ist pro App individuell limitiert und liegt bei 100KB.

Verwenden Roaming-Speicherung wenn der Benutzer eine Aufgabe auf mehreren Geräten fortsetzen soll.

Für eine Echtzeit-Synchronisierung ist der Roaming-Speicher nicht konzipiert.

TIP Bei Verwendung vom Roaming-Speicher prüfen Sie vorher ob ausreichen Datenspeicher vorhanden ist.

TIP Berücksichtigen und planen Sie Versionsänderungen ihrer App im Zusammenhang mit Ihren Datenspeichern ein.

Schreiben in LocalSettings:

var settings = ApplicationData.Current.LocalSettings;
// Einfache Einstellungen
settings.Values["Einfach"] = "Hallo Windows";
// atomarer Einstellungsverbund
var composite = new ApplicationDataCompositeValue();
composite["CompositeA1"] = 1;
composite["CompositeA2"] = "Zabzarab";
settings.Values["Composite"] = composite;
// Einstellungskontainer
var container = settings.CreateContainer("Container", ApplicationDataCreateDisposition.Always);
if (settings.Containers.ContainsKey("Container"))
    settings.Containers["Container"].Values["EinfacheImContainer"] = "Alowa Windows";

Lesen aus LocalSettings:

var settings = ApplicationData.Current.LocalSettings;
// Einfach
var einfach = settings.Values["Einfach"];
StatusAnzeiger.Items.Add(String.Format("    - Einfache = {0}", einfach));
// Composite
var composite = (ApplicationDataCompositeValue)settings.Values["Composite"];
StatusAnzeiger.Items.Add(String.Format("    - Composite = {0}, {1}", composite["CompositeA1"], composite["CompositeA2"]));
// Container
object containerEinfach = settings.Containers["Container"].Values["EinfacheImContainer"];
StatusAnzeiger.Items.Add(String.Format("    - Container => Einfach = {0}", containerEinfach));

Schreiben in RoamingSettings:

var settings = ApplicationData.Current.RoamingSettings;
// Einfache Einstellungen
settings.Values["Einfach"] = "Hallo Welt";
// atomarer Einstellungsverbund
var composite = new ApplicationDataCompositeValue();
composite["CompositeA1"] = 23;
composite["CompositeA2"] = "Abrakadabra";
settings.Values["Composite"] = composite;
// Einstellungskontainer
var container = settings.CreateContainer("Container", ApplicationDataCreateDisposition.Always);
if (settings.Containers.ContainsKey("Container"))
    settings.Containers["Container"].Values["EinfachImContainer"] = "Alowa Welt";

Lesen aus RoamingSettings:

var settings = ApplicationData.Current.RoamingSettings;
// Einfach
var einfach = settings.Values["Einfach"];
StatusAnzeiger.Items.Add(String.Format("    - Einfache = {0}", einfach));
// Composite
var composite = (ApplicationDataCompositeValue)settings.Values["Composite"];
StatusAnzeiger.Items.Add(String.Format("    - Composite = {0}, {1}", composite["CompositeA1"], composite["CompositeA2"]));
// Container
object containerEinfach = settings.Containers["Container"].Values["EinfachImContainer"];
StatusAnzeiger.Items.Add(String.Format("    - Container => Einfach = {0}", containerEinfach));

Schreiben in LocalFolder:

var folder = ApplicationData.Current.LocalFolder;
var file = await folder.CreateFileAsync("LocalDataFile.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, "Guten Tag Windows !");

Lesen aus LocalFolder:

StatusAnzeiger.Items.Add("Lese Datei von LocalFolder:");
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.GetFileAsync("LocalDataFile.txt");
var inhalt = await FileIO.ReadTextAsync(file);

StatusAnzeiger.Items.Add("    - " + inhalt);

Schreiben in RoamingFolder:

var folder = ApplicationData.Current.RoamingFolder;
var file = await folder.CreateFileAsync("RoamingDataFile.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, "Guten Tag Welt !");

Lesen aus RoamingFolder:

var folder = ApplicationData.Current.RoamingFolder;
var file = await folder.GetFileAsync("RoamingDataFile.txt");
var inhalt = await FileIO.ReadTextAsync(file);
StatusAnzeiger.Items.Add("    - " + inhalt);

Schreiben in TempFolder:

var folder = ApplicationData.Current.TemporaryFolder;
var file = await folder.CreateFileAsync("TempDataFile.txt", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, "Guten Tag !");

Lesen aus TemporaryFolder:

StatusAnzeiger.Items.Add("Lese Datei von TemporaryFolder:");
var folder = ApplicationData.Current.TemporaryFolder;
var file = await folder.GetFileAsync("TempDataFile.txt");
var inhalt = await FileIO.ReadTextAsync(file);
StatusAnzeiger.Items.Add("    - " + inhalt);

}

Löschen ApplicationData:

StatusAnzeiger.Items.Add("Lösche Einträge in LocalSettings");
var localSettings = ApplicationData.Current.LocalSettings;
// Einfach
localSettings.Values.Remove("einfacheEinstellung");
// Cmposite
localSettings.Values.Remove("CompositeEinstellung");
// Container
localSettings.DeleteContainer("ContainerEinstellung");

StatusAnzeiger.Items.Add("Lösche Einträge in RoamingSettings");
var roamingSettings = ApplicationData.Current.RoamingSettings;
// Einfach
roamingSettings.Values.Remove("einfacheEinstellung");
// Cmposite
roamingSettings.Values.Remove("CompositeEinstellung");
// Container
roamingSettings.DeleteContainer("ContainerEinstellung");

StatusAnzeiger.Items.Add("Lösche Datei in LocalFolder");
var localFolder = ApplicationData.Current.LocalFolder;
var localFile = await localFolder.GetFileAsync("LocalDataFile.txt");
await localFile.DeleteAsync(StorageDeleteOption.PermanentDelete);

StatusAnzeiger.Items.Add("Lösche Datei in RoamingFolder");
var roamingFolder = ApplicationData.Current.RoamingFolder;
var roamingFile = await roamingFolder.GetFileAsync("RoamingDataFile.txt");
await roamingFile.DeleteAsync(StorageDeleteOption.PermanentDelete);

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s