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