Les données d’applications : les fichiers XML et le Roaming

IC582483En développant vos applications, vous serez probablement ammenés à effectuer des sauvegardes locales de certaines données. Je vais donc vous donner une petite astuce pour sauvegarder et restaurer simplement certains de vos objets métiers.

Prenons le cas d’une application permettant de réaliser des listes de courses. Vos listes contiennent des informations telles qu’un nom, un magasin et la liste des article que vous souhaitez acheter. Voici donc comment, en quelques lignes, sauvegarder et recharger vos données en utilisant un répertoire local ou votre répertoire d’itinérance.

Sauvegarde par sérialisation dans un fichier XML

Le code ci-après vous permet d’aficher une fenêtre de sélection pour choisir le nom du fichier ainsi que l’endroit ou nous allons le stocker. Ensuite, nous générerons le fichier XML représantant une liste de listes de courses.

SaveToXml

Le principe est simple, les données sont sérialisées et injectées dans le fichier que vous aurez choisi.

ChoseSaveFile

Le fichier suivant est alors généré.

SauvegardeXML

L’itinérance (ou Roaming)

Avec Windows 8, vos ordinateurs ou périphériques peuvent fonctionner en se servant des mêmes données sans que vous aillez à vous soucier de la synchronisation entre eux et cela grâce à la mise en place d’un système de Roaming (ou Itinérance) par Microsoft.

Pour l’utiliser, il vous suffit d’ouvrir votre sessions sur vos devices ou ordinateurs à l’aide d’un compte Windows Live. Votre compte possède un espace de stockage sur le cloud qui sera utilisé par les applications Modern UI pour synchroniser leurs données entre vos devices. La synchronisation est totalement transparente et par conséquent vous n’avez plus à vous en soucier.

Sauvegarde dans votre répertoire d’Itinérance (RoamingFolder)

Le dossier RoamingFolder permet de stocker des fichiers ou dossiers propres à une application et un utilisateur. En reprenant l’exemple d’application vu précédemment, nous allons à présent effectuer la sauvegarde automatiquement dans ce répertoire, sans que l’utilisateur n’ait à choisir le répertoire et le nom du fichier de sortie :

SaveToXmlInRoamingfolder

Chargement de notre sauvegarde

Lorsque vous aurez besoin de charger la sauvegarde que vous aurez effectuéee, comme par exemple au lancement de votre application, utilisez le code suivant qui se chargera d’aller chercher dans le répertoire d’itinérance de votre application le fichier « ListsFile.xml » correspondant à la sauvegarde de vos listes de courses.

LoadXMLFile

C’est e prncipe de la désérialisation, qui transforme votre fichier XML en une liste de listes de courses.

ImageViewer Moder UI

Dans ce post, nous allons créer une application ImageViewer. Celle-ci affichera les images que vous possédez dans votre bibliothèque d’image (votre dossier « Mes Images »). Pour cela, ouvrez Visual Studio, et sur la page d’accueil cliquez sur « New Project » ou allez dans « File » à « New » à « Project ». Créez alors un nouveau projet de type « Blank App » dans la rubrique « Windows Metro Style ».

La première chose à faire est d’autoriser votre application d’accéder à votre répertoire « Mes Images ». Si vous ne le faites pas, vous obtiendrez le message d’erreur suivant.

En effet, la politique de sécurité de Windows 8 vous interdit par défaut l’accès à votre bibliothèque d’image. Dans l’explorateur de solution, double-cliquez sur le fichier « Package.appxmanifest ». Allez ensuite sur l’onglet « Capacités », cochez la case correspondant à « Accéder à la bibliothèque d’images » et sauvegardez le fichier.

Ajoutez une nouvelle classe « ImageItem » à la solution. Pour chacune des images de la bibliothèque, on en instanciera une qui contiendra son nom, son chemin et une petite description.

Dans le fichier MainPage.xaml, ajoutez une GridView.

Allez ensuite dans le fichier MainPage.xaml.cs, et créez une méthode « InitializeGrid » qui remplira la GridView avec les images présentes dans votre dossier « Mes Images ».

Lancez alors l’application. S’il existe des images dans votre répertoire « Mes Images », vous obtiendrez alors l’affichage suivant.

Dans le cas où aucune image n’est trouvée dans ce répertoire, vous obtiendrez le message suivant.