Pour des raisons de sécurité, l’exécution des applications Silverlight se
fait dans un environnement très restreint
(impossible d'accéder à la base de
registre, au système de fichiers, etc.), on parle alors d’une "sandbox" (bac à
sable).
Et comment faire pour gérer un cache?
Silverlight nous offre un emplacement d’1Mo(extensible) pour stocker des
informations sous forme de textes ou de fichiers (ex : les paramètres de login,
les préférences utilisateurs…), on parle de "Isolated Storage" ou stockage
isolé.
C’est comme des cookies d’un navigateur web finalement ?! Oui et non: le
principe est le même, mais les caractéristiques pas vraiment ! à titre
d’exemple :
Un cookie est lié forcément à un navigateur,l’Isolated Storage est lié à
l’environnement, pas au navigateur (il ne faut pas oublier que Silverlight est
multi-navigateur).
Un cookie ne peut pas dépasser 4ko, l’Isolated Storage propose 1Mo par défaut
(extensible).
Un cookie contient des caractères alphanumériques, l’Isolated Storage peut
contenir des fichiers(textes, images…)
Maintenant, mettre un peu la main à la pâte ça vous dit?
Tout d'abord, les gens qui ont déjà testé le fonctionnement d’Isolated Storage
avec la beta 1, je tiens à leur dire qu’il ya eu quelques relooking avec la
beta 2. Exemple:
- System.IO.IsolatedStorage.IsolatedStorageFile.TryIncreaseQuotaTo(Int64) renomée: System.IO.IsolatedStorage.IsolatedStorageFile.IncreaseQuotaTo(Int64).
- System.ApplicationException supprimée.
- IsolatedStorage.ApplicationSettings renomée: IsolatedStorage.IsolatedStorageSettings.
La liste complètes des changements (Silverlight 2 Bêta 1 vers Silverlight 2 Bêta 2).
L’Isolated Storage est implémenté dans la mscorlib.dll (le namespace est System.IO.IsolatedStorage).
Un exemple concret vaut mieux qu’un long discours:
L’objectif et de savoir stocker des informations dans un IsolatedStorage et de
les affichées à la demande.
Le formulaire en Xaml :
<Grid Background="Azure" Height="444" HorizontalAlignment="Stretch"
Margin="82.9160003662109,8,4,0" VerticalAlignment="Top" Grid.Column="1"
Width="415.584">
<TextBlock HorizontalAlignment="Left" Margin="34.0839996337891,12,0,0"
VerticalAlignment="Top" Width="57" Text="Entrez text:" TextWrapping="Wrap"
Foreground="#FF3A392F" Height="22"/>
<TextBox HorizontalAlignment="Stretch" Margin="111,8,8,0"
VerticalAlignment="Top" TextWrapping="Wrap" x:Name="text"
Height="26"/>
<Button Height="19.333" HorizontalAlignment="Stretch"
Margin="8,84.6669998168945,147.167999267578,0" Click="Affiche_String"
VerticalAlignment="Top" Content="Afficher IsolatedStorage" x:Name="affiche"
d:LayoutOverrides="Height"/>
La classe à utiliser est IsolatedStorageSetting (les informations à
manipuler ici sont de type : string et bool) :
IsolatedStorageSettings test =
IsolatedStorageSettings.ApplicationSettings;
test.Add("test", text.Text);
test.Save();
text_result.Text = (string)test["test"];
test.Clear();
Comme vous pouvez le constater le principe est très
simple : une hash-table (association clé-valeur).
L’objectif de cet exemple est de stocker des données dans un fichier dans
l'IsolatedStorage et de les afficher à la demande. Pour cela on utilise entre
outre la classe IsolatedStorageFile (pour plus de détails, voyez le code
source).
Donc et comme vous avez constaté, l’utilisation de l'IsolatedStorage est
relativement simple…bonne pratique ;).
Le code source(ExempleIsolatedStorage.zip)
Silverlight 2
Silverlight 2
msdn
IsolatedStorage

