Изолированное хранилище

89

Помимо возможности чтения и записи данных в реестр существует также возможность читать и записывать значения в так называемое изолированное хранилище. Изолированное хранилище должно использоваться при наличии проблем с записью данных в реестр или на диск в целом. Его довольно легко применять для хранения как информации о состоянии приложений, так и пользовательских настроек.

Изолированное хранилище можно считать, по сути, виртуальным диском, где хранятся элементы, к которым должен быть разрешен общий доступ как только приложению, которым они были созданы, так и другим экземплярам этого же приложения. Доступ к изолированному хранилищу может осуществляться двумя способами. Первый подразумевает получение доступа пользователем и сборкой.

При получении доступа к изолированному хранилищу пользователем и сборкой на компьютере присутствует единственное место размещения хранилища, доступное через множество экземпляров приложения. Доступ обеспечивается путем предоставления идентификационных данных пользователя и приложения (или сборки). Этот процесс показан на рисунке в виде диаграммы:

Диаграмма первого типа доступа к изолированному хранилищу

Это означает возможность иметь множество экземпляров одного и того же приложения, которые работают из одного и того же хранилища. Второй способ подразумевает получение доступа к изолированному хранилищу пользователем, сборкой и доменом. В таком случае каждый экземпляр приложения работает из собственного изолированного хранилища, что демонстрирует диаграмма на рисунке ниже:

Диаграмма второго типа доступа к изолированному хранилищу

Как уже было сказано, в таком случае каждый экземпляр приложения работает из собственного хранилища, и параметры записей каждого из этих экземпляров имеют отношение только к самим себе. Это более детализированный подход.

Чтобы увидеть на примере работу с изолированным хранилищем в приложении Windows Forms (точно также его можно использовать и в приложении ASP.NET), реализуем методы ReadSettings() и SaveSettings(), предназначенные для чтения и записи значений в изолированное хранилище:

using System.IO;
using System.I0.IsolatedStorage;
using System.Text;

...

void SaveSettings()
{
   IsolatedStorageFile storFile = IsolatedStorageFile.GetUserStoreForDomain();
   IsolatedStorageFileStream storStream = new
   IsolatedStorageFileStream("SelfPlacingWindow.xml",
   FileMode.Create, FileAccess.Write);
   System.Xml.XmlTextWriter writer = new
      System.Xml.XmlTextWriter(storStream, Encoding.UTF8);
   writer.Formatting = System.Xml.Formatting.Indented;
   
   ...
Пройди тесты
Лучший чат для C# программистов