Introduction
Il est parfois nécessaire de stocker des informations côté client, telles que des identifiants de connexion, un panier d’achat… Bien que nous puissions tout à fait utiliser les classiques cookies, Silverlight propose un dispositif bien plus organisé et simple pour le stockage : l’isolated storage. Sa taille maximale est de 1Mo par application, et peut augmenter en mode out of browser avec des droits élevés. Le but de cet article va donc être de vous en apprendre les bases.
Note : ne croyez surtout pas que l’isolated storage est quelque chose de sécurisé. Il est en effet possible au client d’accéder très facilement à ses données, même sans votre application. Evitez donc le stockage de mot de passe, d’informations confidentielles etc. Pour plus d’informations sur le sujet, je vous suggère l’excellente conférence de Shawn Wildermuth au mix 2010
Lien MIX 2010
Ecrire dans un fichier
L’isolated Storage n’est ni plus ni moins qu’un dossier où vous pouvez stocker des fichiers. Il va donc falloir en premier lieu, créer un fichier avant d’y écrire. Vous aurez besoin de l’using suivant :
using System.IO.IsolatedStorage;
Nous commençons par définir un try catch, car on agit directement sur le système de fichier de l’utilisateur. Il est donc préférable d’éviter le plantage de l’application par cette méthode.
Nous définissons ensuite une variable que représentera notre isolated storage représentera.
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
;
}
}
catch
{
;
}
Nous avons donc accès à un espace de stockage côté client. Nous allons à présent créer un dossier, puis un fichier.
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
string directory = "Key";
store.CreateDirectory(directory);
string filePath = System.IO.Path.Combine(directory, "Key.txt"); //On concatène le nom du fichier et du dossier
if (!store.FileExists(filePath)) //On vérifie que le fichier n'existe pas déja
{
IsolatedStorageFileStream File =
store.CreateFile(System.IO.Path.Combine(directory, "Key.txt")); //On créé le fichier
File.Close(); //On ferme le stream
}
}
}
catch
{
;
}
Maintenant que le fichier est créé, nous allons écrire dedans. Nous utiliserons un StreamWriter, en précisant le chemin du fichier, le mode de fichier (Open), et l’accès sur écriture. Encore une fois, nous allons utiliser un try catch. Mais cette fois-ci nous aurons le détail de l’erreur.
try
{
using (StreamWriter sw =
new StreamWriter(store.OpenFile(filePath,
FileMode.Open, FileAccess.Write)))
{
sw.WriteLine(“Je suis une chaine de caractère”);
}
}
catch (IsolatedStorageException ex)
{
MessageBox.Show(ex.Message);
}
Nous avons donc stocké dans un fichier, une chaine de caractères. Nous allons à présent voir comment y accéder.
Lire un fichier
Une fois que nous avons écrit dans le fichier, il nous faut y lire le contenu. Pour cela, nous allons commencer comme précédemment, c’est-à-dire utiliser un try/catch, ainsi qu’une variable qui représentera notre Isolated Storage.
try
{
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
}
}
catch
{
;
}
Nous définissons ensuite notre chemin (qui pointera donc vers le fichier que nous avons créé tout à l’heure), et nous vérifions qu’il existe !
string directory = System.IO.Path.Combine("Key", "Key.txt");
if (store.FileExists(filePath))
{
{
;
}
}
Il ne reste plus qu’à utiliser un StreamReader pour lire le contenu de notre fichier !
using (StreamReader reader =
new StreamReader(store.OpenFile(filePath,
FileMode.Open, FileAccess.Read)))
{
string content = reader.ReadToEnd();
}
Et voilà, nous avons récupéré le contenu du fichier de l’Isolated Storage ! Simple non ? Vous pouvez donc dès à présent utiliser cette méthode qui est de loin plus simple que la gestion des cookies (en Silverlight en tout cas).
f9e5c66d-eb08-4346-99d4-f4b92708bef6|0|.0
C#, Silverlight
.net, silverlight, isolated storage