Из блога Майка Сноу: Использование Isolated Storage в Silverlight

Silverlight использует Isolated Storage, как виртуальную файловую систему для хранения данных в скрытых папках на вашем компьютере. Он делит данные на две части: первая содержит служебную информацию такую, как размер выделенного дискового пространства. Вторая же содержит собственно данные. Любое приложение Silverlight получает собственную порцию выделенного пространства, которое по умолчанию равно 1 мегабайту.

Преимущества:

  1. Isolated Storage является прекрасной альтернативой использованию куки, особенно, если вы работаете с большими объемами данных. Например, когда вы реализуете undo функциональность в вашем приложении, выбранные товары в корзине, настройки окна и любые другие настройки, которые ваше приложение может прочесть при следующем сеансе.
  2. Isolated Storage хранит данные разных пользователей раздельно, что позволяет и серверной части разделять уникальные пользовательские настройки.

Потенциальные ловушки:

  1. Системные администраторы могут ограничивать дисковое пространство, выделяемое для этих целей, что не гарантирует наличия достаточного пространства. Поэтому важно добавить обработку такого рода исключений в ваш код.
  2. Не смотря на то, что Isolated Storage находится в скрытой папке, эта папка все же может быть найдена с минимальными усилиями. Таким образом, эти данные не являются абсолютно безопасными, т.к. пользователь может их изменить или вовсе удалить. Вы можете использовать криптографические классы для шифрования данных, чтобы предотвратить их изменения пользователем.
  3. Системные администраторы могут и вовсе запретить запись в Isolated Storage. Код должен иметь IsolatedStorageFilePermission для того, что писать в Isolated Storage.

Подытоживая выше сказанное, давайте посмотрим, как мы сохранять и читать данные. Обратите внимание на то, что вам понадобится добавлять ссылки и на System.IO.IsolatedStorage, и на System.IO пространства имен.

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Net;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Documents;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Animation;
 using System.Windows.Shapes;
 using System.IO.IsolatedStorage;
 using System.IO;
  
 namespace SilverlightApplication10
 {
     public partial class Page : UserControl
     {
         public Page()
         {
             InitializeComponent();
             SaveData("Hello There", "MyData.txt");
             string test = LoadData("MyData.txt");
         }
  
         private void SaveData(string data, string fileName)
         {
             using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
             {
                 using (IsolatedStorageFileStream isfs = new IsolatedStorageFileStream(fileName, FileMode.Create, isf))
                 {
                     using (StreamWriter sw = new StreamWriter(isfs))
                     {
                         sw.Write(data);
                         sw.Close();
                     }
                 }
             }
         }
  
         private string LoadData(string fileName)
         {
             string data = String.Empty;
             using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
             {
                 using (IsolatedStorageFileStream isfs = new IsolatedStorageFileStream(fileName, FileMode.Open, isf))
                 {
                     using (StreamReader sr = new StreamReader(isfs))
                     {
                         string lineOfData = String.Empty;
                         while ((lineOfData = sr.ReadLine()) != null)
                             data += lineOfData;
                     }
                 }
             }
             return data;
         }
     }
 }

Выдержка из блога Майка Сноуссылка на оригинал

Авторские права Майка Сноу. Переведено с разрешения Майка Сноу.

Technorati Tags: Silverlight