Isolated Storage в Silverlight
Silverlight использует изолированное хранилище (Isolated Storage), как виртуальную файловую систему для хранения данных в скрытых папках на компьютере пользователя. Данные состоят из двух частей: первая содержит служебную информацию (размер выделенного дискового пространства), вторая содержит собственно данные. Любое приложение Silverlight получает собственную порцию выделенного пространства, которое по умолчанию равно 1 мегабайту.
Преимущества:
Изолированное хранилище является хорошей альтернативой cookies, особенно при работе с большими объемами данных. Isolated Storage хранит данные разных пользователей раздельно, что позволяет и серверной части разделять уникальные пользовательские настройки.
Ограничения
Системные администраторы могут ограничивать дисковое пространство, выделяемое для этих целей, что не гарантирует наличия достаточного пространства. Поэтому важно добавить обработку такого рода исключений в ваш код.
Хотя 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;
}
}
}
Источник: Из блога Майка Сноу: Использование Isolated Storage в Silverlight

