Isolatedstorage что это за программа - TurboComputer.ru
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд (пока оценок нет)
Загрузка...

Isolatedstorage что это за программа

День пятнадцатый. Изолированное хранилище

Вступление

Как я и обещал, сегодня поговорим об изолированном хранилище (Isolated Storage). Иногда где-то нужно хранить используемую информацию, например, настройки программы или заметки о том, что вы делали прошлым летом. Windows Phone 7 не предоставляет доступа к своей файловой системе и в ее составе нет Проводника или редактора реестра для работы с настройками. Вместо этого используется изолированное хранилище.

Что такое Isolated Storage

Понятие изолированного хранилища не ново для разработчика. Данный механизм присутствовал в Silverlight со второй версии. Основная особенность изолированного хранилища, как видно из названия, – хранение данных или файлов на локальной файловой системе. Причем доступ к данным имеет только программа, которая поместила туда эти данные. Поэтому хранилище и называется изолированным. Если у вас есть две программы, и вы хотите, чтобы они обращались к одним и тем же данным, то вам следует присмотреться к “облачным” технологиям, о которых так много говорят сейчас. Изолированное хранилище не позволяет делиться своим данными между несколькими программами.

Для организации механизма хранения данных в Windows Phone 7 используется следующий набор объектов:

  • System.IO.IsolatedStorage.IsolatedStorageSettings – предоставляет доступ к словарю (ключ-значение) настроек для текущего хранилища (Isolated Settings Storage);
  • System.IO.IsolatedStorage.IsolatedStorageFile – позволяет получить доступ к хранилищу данных(Isolate File Storage);
  • System.IO.IsolatedStorage.IsolatedFileStream – позволяет получить доступ к содержимому файла в хранилище (Isolate File Storage);
  • System.IO.IsolatedStorage.IsolatedStorageException – исключение, возникающее при ошибках в работе с хранилищем

Настройки или файлы

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

  • Isolated Settings Storage;
  • Isolated File Storage

Хранилище Isolated Settings Storage предназначено для хранения настроек приложения. Хранение настроек осуществляется в специальном словаре (ключ-значение) и очень похоже на то, как работают аналогичные механизмы в настольной платформе.

Хранилище Isolated File Storage предназначено для хранения различных данных в виде файлов и папок. Таким образом вы можете структурировать хранилище, используя разбиение на папки. Фактически, это – некоторый доступ к файловой системе изолированного хранилища.

Ниже приведена иллюстрация на данную тему (взято с MSDN).

Хранение настроек (IsolatedStorageSettings)

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

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

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

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

Как видите, ничего сложного. Необходимо только запомнить несколько вещей:

  • Чтобы избежать ошибок при попытке извлечь несуществующие данные, всегда проверяйте наличие свойства Contains.
  • Вы можете сохранять данные любого типа. В нашем примере сохранялось значение типа Boolean. Но вы можете сохранять любой объект.
  • Необходимо использовать приведение типов при излечении данных. Изолированное хранилище хранит ваши данные, но не хранит тип данных.
  • Установка значения через settings.Add() не обязательно, вы можете просто присвоить значение нужной настройке. В первом примере используется данный прием, чтобы вы знали о нем.

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

Хранение файлов (IsolatedStorageFile)

Для доступа к файловому хранилищу используется класс IsolatedStorageFile и вы можете хранить настоящие файлы на устройстве. Обратившись к его статическому методу GetUserStoreForApplication можно получить доступ к объекту, предоставляющему всевозможные методы для работы с файлами и папками:

  • GetDirectoryNames – позволяет получить список всех папок в заданном контексте;
  • GetFileNames – позволяет получить список всех файлов в заданном контексте;
  • CreateDirectory – позволяет создать папку;
  • DeleteDirectory – позволяет удалить папку;
  • DirectoryExists – позволяет проверить наличие папки;
  • CreateFile – позволяет создать файл;/li>
  • OpenFile – позволяет открыть файл для чтения и/или изменения;
  • DeleteFile – позволяет удалить файл;
  • FileExists – позволяет проверить наличие файла.

Как видно, для работы с файлом используется метод OpenFile. Этот файл возвращает поток, с которым можно работать так, как мы это делаем обычно (например, используя StreamReader/StreamWriter). Например, код для записи информации в файл будет выглядеть следующим образом.

Мы создадим текстовый файл в подпапке, а затем получим содержимое из текстового файла. У нас есть возможность создавать и удалять папки, подпапки и файлы. Для этого мы создаем новый объект IsolatedStorageFile, а затем записываем его на диск при помощи IsolatedStorageFileStream. В примете имеются комментарии, чтобы вам было понятнее. У нас есть два события, одно из них сохраняет файл, второе – читает из файла:

Вы можете поиграться с примером. Создайте файл, а затем закройте приложение. Откройте приложение и попытайтесь прочитать ранее сохраненный файл. Если все получилось, то вы поймете, как это удобно для вас.

Дополнительная информация

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

При удалении приложения из устройства, данные из изолированного хранилища также удаляются.

Заключение

Сегодня мы познакомились с двумя способами хранения данных из приложения, которые используются в Windows Phone 7: IsolatedStorageSettings и IsolatedStorageFile. Как видно, на это не требуется много усилий, а работа с хранилищем очень похожа на аналогичные операции в настольном Silverilght. Тем не менее, по сравнению с хранилищем в Silverilght, хранилище в Windows Phone не имеет ограничений, связанных с объемом хранимой информации. Успехов вам в создании ваших мобильных приложений!

Класс IsolatedStorageFile

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

IsolatedStorageFile Этот класс представляет собой область файловой системы изолированной-памяти , которая может содержать файлы и каталоги. Для работы с изолированным хранилищем не требуется высоких привилегий, поэтому приложения смогут хранить в нем свои данные, даже не обладая разрешениями на доступ к системе пользователя. Изолированное хранилище представляет собой новый механизм хранения данных , который предоставляет частичное доверия приложений в изолированной программной среде безопасности для хранения данных , таким образом, контролируется политикой безопасности компьютера. Поскольку файловые операции ввода / вывода нарушают параметры безопасности зоны Интернета, изолированное хранилище предлагает жизнеспособным вариантом для хранения части данных на клиенте , которые могут быть извлечены при следующем запуске приложения. По умолчанию код , работающие на локальном компьютере, в локальной сети или Интернет предоставляется право использовать изолированное хранение. Из технической аббревиатуры и определения не сильно понятна его суть работа, но попробую объяснить вам свои словами. Для начала хочу сказать что данный класс нужен для мобильных разработок и веб разработок, для дексктопа он бесполезен. Почему так? Все дело в том что доступ на компьютере получить можно абсолютно к любому файлу, соответственно и его данным, однако к примеру в windows phone это ни так, доступ к файлам из изолированого хранилища может, получить только та программа которая их создала. Другое дело в работе с веб приложениями, тут можно сравнить с так называемыми cookie файлами которые хранят данные о пользователе, и сервисе. Но данные имеют ограниченный размер, и возможности, а так же удаляются при чистке истории браузера. Другое дело с изолированным хранилищем, в нем так же можно хранить информацию о покупках, настройках сервиса и данных пользователя. Во первых это безопасно, так как своего рода песочница, во вторых удобно, оно не требует получения сертификации для вашего сервиса, что может накладывать некие ограничения для приложения. Ведь ни каждый разработчик может позволить себе потратиться на получения этого сертификата, хотя по моему опыту, и тенденции все идет к тому что в будущем именно так и будет, уже сейчас свое приложение требует запуска с правами администратора…

Читайте также:  Hide Folders 5.6

System.IO.IsolatedStorage — пространство имен, в котором определены классы для работы с изолированным хранилищем.

Для хранения данных сборок и пользователей в защищенных областях используется класс IsolatedStorageFile. Класс IsolatedStorageFileStream позволяет обмениваться данными с безопасными хранилищами. Поскольку класс IsolatedStorageFileStream – потомок FileStream, с созданными им файлами можно работать, как с любыми другими файлами файловой системы. Класс IsolatedStorageFilePermission гарантирует наличие у кода разрешений, необходимых для взаимодействия с изолированным хранилищем.

Изолированное хранилище рекомендуется использовать для:

  • Промежуточного хранения и загрузки элементов управления
  • Хранения общих компонентов
  • Хранения личных данных пользователей на сервере
  • Перемещения личных данных пользователей

Изолированное хранилище не рекомендуется использовать для:

  • Хранения конфиденциальных и важных данных
  • Хранения кода
  • Хранения данных развертывания

Есть два типа изоляции, которые могут быть использованы:

хранилище уровня пользователя содержится информация специфичная для данного пользователя хранилище уровня компьютера.

IsolatedStorageFile user=IsolatedStorageFile.GetUserStoreForAssembly();

IsolatedStorageFile machine=IsolatedStorageFile.GetMachineStoreForAssembly();

в изолированном хранилище содержится информация специфичная для локального компьютера и сборки.

Оба типа изоляции требуют, чтобы область хранения была связана с пользователем и сборкой. Только пользователь и сборка, создавший хранилище имеют к нему доступ, за исключением windows.

Запись в изолированное хранилище.

Создание изолированного хранилища уровня .Net сборки.

Isolated Storage File Класс

Определение

Предоставляет область изолированного хранилища, в которой содержатся файлы и каталоги. Represents an isolated storage area containing files and directories.

Примеры

В примере кода ниже показано, как создавать файлы и каталоги в изолированном хранилище. The following code example illustrates how to create files and directories in an isolated store. Сначала извлекается хранилище, изолированное по пользователю, домену и сборке, и помещается в переменную isoStore . First, a store that is isolated by user, domain, and assembly is retrieved and placed in the isoStore variable. Затем метод CreateDirectory вызывается для создания каталогов, и два экземпляра класса IsolatedStorageFileStream создают файлы в этих каталогах. The CreateDirectory method is then called to create directories, and two instances of the IsolatedStorageFileStream class create files in these directories.

Комментарии

Этот объект соответствует определенной области изолированного хранения, где существуют файлы, представленные объектами IsolatedStorageFileStream. This object corresponds to a specific isolated storage scope, where files represented by IsolatedStorageFileStream objects exist. Приложения могут использовать изолированное хранилище для сохранения данных в собственной изолированной части файловой системы без указания определенного пути в файловой системе. Applications can use isolated storage to save data in their own isolated portion of the file system, without having to specify a particular path within the file system. Так как изолированные хранилища ограничены определенными сборками, большинство других управляемых программного кода не смогут получить доступ к данным вашего кода (высоко доверенный управляемый код и средства администрирования могут получать доступ к хранилищам из других сборок). Since isolated stores are scoped to particular assemblies, most other managed code will not be able to access your code’s data (highly trusted managed code and administration tools can access stores from other assemblies). Неуправляемый код может обращаться к любому изолированному хранилищу. Unmanaged code can access any isolated stores.

Для получения дополнительной информации см. Изолированное хранилище. For more information, see Isolated Storage.

Этот тип реализует интерфейс IDisposable. This type implements the IDisposable interface. По окончании использования выдаленную ему память следует прямо или косвенно освободить. When you have finished using the type, you should dispose of it either directly or indirectly. Чтобы сделать это прямо, вызовите его метод Dispose в блоке try / catch . To dispose of the type directly, call its Dispose method in a try / catch block. Чтобы сделать это косвенно, используйте языковые конструкции, такие как using (в C#) или Using (в Visual Basic). To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). Дополнительные сведения см. в разделе “Использование объекта, реализующего IDisposable” в статье об интерфейсе IDisposable. For more information, see the “Using an Object that Implements IDisposable” section in the IDisposable interface topic.

Изолированное хранилище недоступно для приложений Windows Магазин Windows 8.x Windows 8.x Store . Isolated storage is not available for Магазин Windows 8.x Windows 8.x Store apps. Вместо этого используйте классы данных приложений в пространствах имен Windows.Storage , включенных в API Среда выполнения Windows Windows Runtime для хранения локальных данных и файлов. Instead, use the application data classes in the Windows.Storage namespaces included in the Среда выполнения Windows Windows Runtime API to store local data and files. Дополнительные сведения см. в статье Доступ к данным приложения в Центре разработки для Windows. For more information, see Application data in the Windows Dev Center.

Свойства

Получает значение, показывающее объем свободного пространства, доступного для изолированного хранилища. Gets a value that represents the amount of free space available for isolated storage.

Получает текущий размер изолированного хранения. Gets the current size of the isolated storage.

Получает значение, указывающее, включено ли изолированное хранилище. Gets a value that indicates whether isolated storage is enabled.

Возвращает значение, представляющее максимальный размер области, доступной для изолированного хранения в пределах, установленных квотой. Gets a value representing the maximum amount of space available for isolated storage within the limits established by the quota.

Получает значение, представляющее максимальный объем свободного пространства, доступного для изолированной памяти. Gets a value that represents the maximum amount of space available for isolated storage.

Получает значение, показывающее объем пространства, используемого для изолированного хранилища. Gets a value that represents the amount of the space used for isolated storage.

Методы

Копирует существующий файл в новый файл. Copies an existing file to a new file.

Копирует существующий файл в новый файл и, возможно, перезаписывает существующий файл. Copies an existing file to a new file, and optionally overwrites an existing file.

Создает в области ограниченного действия изолированного хранения папку. Creates a directory in the isolated storage scope.

Создает файл в изолированном хранилище. Creates a file in the isolated store.

Удаляет из области ограниченного действия изолированного хранилища папку. Deletes a directory in the isolated storage scope.

Удаляет из области ограниченного действия изолированного хранилища файл. Deletes a file in the isolated storage scope.

Определяет, указывает ли заданный путь на существующий каталог в изолированном хранилище. Determines whether the specified path refers to an existing directory in the isolated store.

Освобождает все ресурсы, занятые модулем IsolatedStorageFile. Releases all resources used by the IsolatedStorageFile.

Определяет, равен ли указанный объект текущему объекту. Determines whether the specified object is equal to the current object.

(Унаследовано от Object)FileExists(String)

Определяет, указывает ли заданный путь на существующий файл в изолированном хранилище. Determines whether the specified path refers to an existing file in the isolated store.

Позволяет объекту попытаться освободить ресурсы и выполнить другие операции очистки, перед тем как он будет уничтожен во время сборки мусора. Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.

Читайте также:  Родительский контроль на компьютере бесплатная программа

Возвращает дату и время создания заданного файла или каталога. Returns the creation date and time of a specified file or directory.

Перечисляет каталоги в корневой папке изолированного хранилища. Enumerates the directories at the root of an isolated store.

Перечисляет каталоги в области изолированного хранилища, соответствующие заданному шаблону поиска. Enumerates the directories in an isolated storage scope that match a given search pattern.

Возвращает счетчик для хранилищ IsolatedStorageFile в области ограниченного действия изолированного хранения. Gets the enumerator for the IsolatedStorageFile stores within an isolated storage scope.

Перечисляет имена файлов в корневой папке изолированного хранилища. Enumerates the file names at the root of an isolated store.

Получает имена файлов, соответствующие шаблону поиска. Gets the file names that match a search pattern.

Служит в качестве хэш-функции по умолчанию. Serves as the default hash function.

(Унаследовано от Object)GetLastAccessTime(String)

Возвращает дату и время последнего обращения к указанному файлу или каталогу. Returns the date and time a specified file or directory was last accessed.

Возвращает дату и время последней операции записи в указанный файл или каталог. Returns the date and time a specified file or directory was last written to.

Получает изолированное хранение с областью действия компьютера, соответствующее вызову удостоверения приложения кода. Obtains machine-scoped isolated storage corresponding to the calling code’s application identity.

Получает изолированное хранение с областью действия компьютера, соответствующее вызову удостоверения сборки кода. Obtains machine-scoped isolated storage corresponding to the calling code’s assembly identity.

Возвращает изолированное хранение с областью действия компьютера, соответствующее удостоверению домена приложения и сборки. Obtains machine-scoped isolated storage corresponding to the application domain identity and the assembly identity.

Возвращает изолированное хранение, соответствующее объектам и типам данного домена приложения и свидетельства сборки. Obtains isolated storage corresponding to the given application domain and the assembly evidence objects and types.

Получает изолированное хранение, соответствующее данному удостоверению приложения. Obtains isolated storage corresponding to the given application identity.

Возвращает изолированное хранение, соответствующее объектам данного домена приложения и свидетельства сборки. Obtains the isolated storage corresponding to the given application domain and assembly evidence objects.

Получает изолированное хранение, соответствующее области изоляции и объекту удостоверения приложения. Obtains isolated storage corresponding to the isolation scope and the application identity object.

Получает изолированное хранение, соответствующее области ограниченного действия изолированного хранения, предоставляющей типы домена приложения и свидетельства сборки. Obtains isolated storage corresponding to the isolated storage scope given the application domain and assembly evidence types.

Возвращает объект Type для текущего экземпляра. Gets the Type of the current instance.

(Унаследовано от Object)GetUserStoreForApplication()

Получает изолированное хранение с областью действия пользователя, соответствующее вызову удостоверения приложения кода. Obtains user-scoped isolated storage corresponding to the calling code’s application identity.

Получает изолированное хранение с областью действия пользователя, соответствующее вызову удостоверения сборки кода. Obtains user-scoped isolated storage corresponding to the calling code’s assembly identity.

Получает изолированную область хранения с областью действия пользователя, соответствующую удостоверению домена приложения и удостоверению сборки. Obtains user-scoped isolated storage corresponding to the application domain identity and assembly identity.

Получает изолированное хранилище с определенной пользователем областью действия для использования приложениями в домене виртуального узла. Obtains a user-scoped isolated store for use by applications in a virtual host domain.

Позволяет приложению в явной форме запросить больший размер квоты в байтах. Enables an application to explicitly request a larger quota size, in bytes.

Создает неполную копию текущего объекта Object. Creates a shallow copy of the current Object.

(Унаследовано от Object)MoveDirectory(String, String)

Перемещает указанный каталог и его содержимое в новое расположение. Moves a specified directory and its contents to a new location.

Перемещает указанный файл в новое расположение и позволяет указать для файла новое имя. Moves a specified file to a new location, and optionally lets you specify a new file name.

Открывает файл в заданном режиме. Opens a file in the specified mode.

Открывает файл в заданном режиме с заданным доступом для чтения и записи. Opens a file in the specified mode with the specified read/write access.

Открывает файл в заданном режиме, с заданным уровнем доступа для чтения и записи и с разрешением на совместный доступ. Opens a file in the specified mode, with the specified read/write access and sharing permission.

Удаляет область ограниченного действия изолированного хранения со всем ее содержимым. Removes the isolated storage scope and all its contents.

Удаляет для всех удостоверений указанную область ограниченного действия изолированного хранения. Removes the specified isolated storage scope for all identities.

Возвращает строку, представляющую текущий объект. Returns a string that represents the current object.

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

Коду Silverlight запрещено записывать информацию в произвольное место фай­ловой системы и считывать оттуда. Очевидно, что если бы это было разрешено, была бы нарушена безопасность браузера. Однако во многих случаях приложениям Silverlight нужно сохранять информацию надолго. Для этого используется изолирован­ное хранилище (isolated storage).

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

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

Новые средства. В Silverlight 3 добавлен класс SaveFileDialog, дополняющий существовавший класс OpenFileDialog и предоставляющий возможность сохранить заданный пользователем файл за пределами изолированного хранилища. Класс SaveFileDialog рассматривается в конце главы.

Концепция изолированного хранилища

предоставляет виртуальную файловую систему, которая позволяет сохранять данные, специфичные для приложения и пользователя. Объем со­храняемых данных по умолчанию не может превышать 1 Мбайт. Приложение может попросить пользователя задать больший объем.

Создаваемое приложением Silverlight изолированное хранилище немного похоже на файлы cookie, создаваемые веб-страницей. Браузер управляет изолированным храни­лищем, предотвращая попытки заполнить диск или вмешаться в файловую систему.

Область видимости изолированного хранилища

Уникальное изолированное хранилище создается для каждой комбинации пользова­телей и приложений. Это означает, что приложение может создать много хранилищ, по одному для каждого пользователя. Аналогично для пользователя может быть создано много хранилищ, по одному для каждого приложения Silverlight. Изолированное храни­лище не является специфичным для конкретного браузера. Например, запуская прило­жение сначала в Internet Explorer, а затем в Firefox, пользователь имеет доступ к одному и тому же хранилищу.

Примечание. Пользователь с правами администратора Windows имеет доступ к изолированным хранилищам других пользователей.

Критически важным фактором, служащим для идентификации приложения Silverlight, является адрес URL файла ХАР. Это означает следующее.

• Разные файлы ХАР, размещенные в одной и той же папке одного и того же веб­сервера, имеют разные изолированные хранилища.

• Если веб-сайт хостируется в разных доменах, каждый экземпляр сайта получит собственное изолированное хранилище.

• Разные тестовые страницы, хостирующие одно и то же приложение Silverlight, пользуются одним и тем же изолированным хранилищем.

• Если переименовать папку или файл ХАР, приложение получит новое изолиро­ванное хранилище.

• Если изменить идентификатор GUID, версию или другие метаданные приложе­ния Silverlight, оно получит доступ к прежнему изолированному хранилищу.

• Если заменить одно приложение Silverlight другим, но с тем же именем файла ХАР, оно получит доступ к изолированному хранилищу предыдущего приложения.

Что хранят в изолированных хранилищах

— подходящее место для хранения небольшого количе­ства несущественной информации. Например, в нем обычно хранятся параметры, спец­ифичные для пользователя, предпочтения пользователя, информация о предыдущих его действиях. Кроме того, в изолированных хранилищах часто сохраняются временные данные. Предположим, пользователь должен заполнить форму, состоящую из нескольких частей, которые расположены на разных страницах, а затем передать форму веб-службе для постоянного хранения. При каждом переходе от одной части формы к другой теку­щие данные можно сохранять в изолированном хранилище. Затем, когда пользователь заполнит все части формы и передаст ее веб-службе, хранилище можно удалить. Такой способ предотвращает потерю данных, когда приложение не может установить контакт с веб-службой (например, из-за сбоев сети) или когда пользователь ошибочно запускает приложение повторно (например, случайно щелкнув на кнопке Назад). В любом случае приложение при запуске проверяет содержимое хранилища и предоставляет пользовате­лю возможность либо загрузить хранящиеся данные, либо ввести их повторно.

Читайте также:  Как установить на Windows 10 несовместимую программу

В изолированном хранилище (в отличие от кеша браузера) данные хранятся посто­янно, срока годности у них нет. Кроме того, содержимое хранилища не удаляется, когда пользователь явно удаляет временные файлы Интернета. Однако изолированное хра­нилище — не очень подходящее место для хранения важных документов, потому что в нем не создается резервная копия, и его содержимое легко случайно удалить (например, если пользователь изменяет регистрационную информацию). Кроме того, изолирован­ное хранилище не пригодно для кеширования ресурсов (например, внешних изображе­ний и мультимедийных файлов). При создании приложения Silverlight часто возникает искушение сохранять в нем что угодно, однако не забывайте, что оно предназначено для небольшого объема данных и не является заменителем кеша HTTP.

Использование изолированного хранилища

Изолированные хранилища легко использовать, потому что они основаны на той же потоковой модели, что и доступ к обычным файлам в .NET. Для доступа к изолирован­ному хранилищу используются типы пространства имен System. 10. IsolatedStorage, являющегося базовой частью инфраструктуры Silverlight.

Открытие изолированного хранилища

Надстройка Silverlight создает изолированное хранилище автоматически. Для взаимодействия с ним используется класс IsolatedStorageFile. Получить объект isolatedStorageFile для текущего пользователя и приложения можно, вызвав стати­ческий метод IsolatedStorageFile.GetUserStoreForApplicationО.

IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();

Метод возвращает именно то, что обычно нужно, — специфичное для пользователя место, в котором можно хранить данные. Однако в классе IsolatedStorageFile есть еще один похожий статический метод GetUserStoreForSite (). Он предоставляет для хранения сайт в текущем домене, доступный для всех приложений Silverlight, но только для текущего пользователя. Обычно он используется при разработке группы приложе­ний Silverlight, когда нужно хранить для них общую информацию.

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

Имя класса IsolatedStorageFile может ввести в заблуждение, потому что он пред­ставляет не один файл, а коллекцию файлов, находящихся в хранилище. Методы клас­са IsolatedStorageFile аналогичны методам управления файлами, представленными в классах File и Directory полнофункциональных приложений .NET. Наиболее важные методы приведены в табл. 18.1.

Таблица 18.1. Методы класса IsolatedStorageFile, предназначенные для управления файлами

Создание в хранилище новой папки с заданным именем

Хранение данных в Windows Phone 7 средствами Isolated Storage

Вопрос хранения данных затрагивает практически любое приложения и не может оставаться в стороне. При разработке приложений для Windows Phone 7 в качестве основного сценария на данный момент предлагается использовать механизм Isolated Storage, который успешно используется в приложениях Silverlight. Давайте попробуем поработать с Isolated Storage.

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

  • Isolated Settings Storage;
  • Isolated File Storage.

Хранилище Isolated Settings Storage предназначено для хранения настроек приложения. Хранение настроек осуществляется в специальном словаре (ключ-значение) и очень похоже на то, как работают аналогичные механизмы в настольной платформе.

Хранилище Isolated File Storage предназначено для хранения различных данных в виде файлов. При этом это хранилище можно структурировать, используя разбиение на папки. Фактически, это – некоторый доступ к файловой системе изолированного хранилища.

Для организации механизма хранения данных в Windows Phone 7 SDK используется следующий набор объектов:

  • System.IO.IsolatedStorage.IsolatedStorageSettings – предоставляет доступ к словарю (ключ-значение) настроек для текущего хранилища (Isolated Settings Storage);
  • System.IO.IsolatedStorage.IsolatedStorageFile – позволяет получить доступ к хранилищу данных(Isolate File Storage);
  • System.IO.IsolatedStorage.IsolatedFileStream – позволяет получить доступ к содержимому файла в хранилище (Isolate File Storage);
  • System.IO.IsolatedStorage. IsolatedStorageException – исключение, возникающее при ошибках в работе с хранилищем.

Хранение настроек
Для доступа к настройкам приложения используется класс IsolatedStorageSettings. Этот класс представляет собой словарь, при помощи которого по ключу можно обратиться к конкретной настройке. Для доступа к значению используется индексатор. Например, получить доступ к ключу “count” можно используя следующий код.

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

Аналогичным образом можно работать с любыми ключами Isolated Settings Storage.

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

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

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

Надстройка будет представлять с собой несколько методов-расширений для класса IsolatedStorageSettings. Для получения настроек в типизированном виде создадим метод GetSetting, который будет принимать в качестве параметра имя ключа и значение по умолчанию (если, например, ключ не найден). Также сделаем перегруженную версию метода, чтобы можно было не указывать значение по умолчанию. Внутри этого метода выполним все действия, которые мы видели с вами раньше.

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

Мы также можем указать значение по умолчанию, которое будет использоваться, если ключ не найден в настройках. Например, мы можем вести отсчет с числа 10.

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

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

Хранение данных
Для доступа к файловому хранилищу используется класс IsolatedStorageFile. Обратившись к его статическому методу GetUserStoreForApplication() можно получить доступ к объекту, предоставляющему всевозможные методы для работы с файлами и папками:

  • GetDirectoryNames – позволяет получить список всех папок в заданном контексте;
  • GetFileNames – позволяет получить список всех файлов в заданном контексте;
  • CreateDirectory – позволяет создать папку;
  • DeleteDirectory – позволяет удалить папку;
  • DirectoryExists – позволяет проверить наличие папки;
  • CreateFile = позволяет создать файл;
  • OpenFile – позволяет открыть файл для чтения и/или изменения;
  • DeleteFile – позволяет удалить файл;
  • FileExists – позволяет проверить наличие файла.

Как видно, для работы с файлом используется метод OpenFile. Этот файл возвращает поток, с которым можно работать так, как мы это делаем обычно (например, используя StreamReader/StreamWriter). Например, код для записи информации в файл будет выглядеть следующим образом.

Аналогичным образом выглядит код для считывания содержимого файла.

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

Таким образом, без особых усилий мы создали небольшое приложение, работающее с Isolated Storage – Isolated Settings Storage и Isolated File Storage. Как видно, на это не требуется много усилий, а работа с хранилищем очень похожа на аналогичные операции в настольном Silverilght. Тем не менее, по сравнению с хранилищем в Silverilght, хранилище в Windows Phone не имеет ограничений, связанных с объемом хранимой информации.

Успехов вам в создании ваших мобильных приложений!

Ссылка на основную публикацию
Adblock
detector