Всем привет. Сегодня мы поговорим о таком важном аспекте разработки приложений, как работа с данными. Практически любое приложение хранит какую-либо информацию. Это могут быть пользовательские данные, настройки приложения, кэш AJAX запросов, либо что-то еще.
Все эти данные необходимо где-то хранить. И платформа WinJS предоставляет нам API для хранения нашей информации в различных типах хранилищ. Какие хранилища существуют в приложения Windows Store JavaScript и как ими польоваться - мы узнаем в этой статье.
Хранилище сессии
Начнем, с временного хранилища – хранилище данных, которое существует только на протяжении сессии запуска приложения (тем, кто знаком с ASP.NET это хранилище будет знакомо).
Для записи данных в это хранилище следует использовать следующий синтаксис:
1: var mySessionState = WinJS.Application.sessionState;
2: mySessionState.myKey = "myValue";
Данное хранилище будет жить до тех, пор пока приложение не будет полностью закрыто (состояние NotRunning). Если же пользователь просто свернул приложение (состояние Suspended) – данные сессии будут сериализованы на диск и восстановлены при повторном открытии приложения (Relaunch).
Локальные настройки
Данный тип хранилища содержит пары ключ-значение и постоянно хранит все данные на диске. Код для записи данных приведен ниже:
1: var applicationData = Windows.Storage.ApplicationData.current;
2: var localSettings = applicationData.localSettings;
3: localSettings.values["exampleSetting"] = "Hello Windows";
Как правило, данное хранилище используется для длительного хранения небольших по объему настроек приложения.
Локальное хранилище
Предоставляет доступ к каталогу на файловой системе. С помощью этого хранилища вы можете записывать и читать файлы любого размера. Пример создания и чтения файла приведен ниже:
1: var applicationData = Windows.Storage.ApplicationData.current;
2: var localFolder = applicationData.localFolder;
3:
4:
5: function writeToFile() {
6: localFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting)
7: .then(function (sampleFile) {
8: return Windows.Storage.FileIO.writeTextAsync(sampleFile, "myValue");
9: }).done(function () { });
10: }
11:
12: function readFromFile() {
13: localFolder.getFileAsync("dataFile.txt")
14: .then(function (sampleFile) {
15: return Windows.Storage.FileIO.readTextAsync(sampleFile);
16: }).done(function (fileText) {
17: // Получено содержимое файла
18: }, function () {
19: // ошибка
20: });
21: }
Временное локальное хранилище
Данный тип хранилища очень похож на предыдущий, за тем исключением что папка с данными находится во временном каталоге операционной системы и в случае нехватки места на диске пользователь через операционную систему может очистить временные папки.
Доступ к временной папке можно получить следующим образом:
1: var applicationData = Windows.Storage.ApplicationData.current;
2: var temporaryFolder = applicationData.temporaryFolder;
Запись и чтение файлов осуществляется аналогично локальному хранилищу.
Роуминг
Это несомненно, самый интересный вид хранилища. И это одна из основных особенностей Windows 8. Данное хранилище автоматически синхронизирует свое состояние между различными компьютерами одного пользователя. Это хранилище не предназначено для больших объемов данных. Ограничение размера папки – 100 килобайт. После достижения лимита данные будут продолжать успешно писаться в папку, но не будут синхронизироваться.
Получить доступ к папке можно следующим образом:
1: var applicationData = Windows.Storage.ApplicationData.current;
2: var roamingFolder = applicationData.roamingFolder;
Запись и чтение файлов происходит аналогично предыдущим примерам. Также существует несколько ограничений именований файлов в папке роуминга. Например, запрещено ставить пробелы в начале имени файла.
IndexedDB
Последнее хранилище – база данных, которая может хранить данные типа ключ-значение. Данное хранилище пришло в WinJS из HTML5 и является достаточно мощным механизмом с широкой функциональностью. Более подробно работу с IndexedDB мы рассмотрим в одной из следующих статей.
Как вы видите, Windows 8 и WinJS предоставляют нам множество разнообразных хранилищ для наших данных. Какое из них выбрать – зависит от конкретной задачи. Спецификация Microsoft предоставляет некоторые правила, которые помогут вам сориентироваться:
- Используйте хранилище сессии для данных которые часто меняются;
- Используйте локальные постоянные хранилища для данных которые не слишком часто меняются и которые должны быть сохранены между вызовами приложения;
- Используйте IndexedDB и локальное постоянное хранилище для больших объемов данных;
- Используйте локальное временное хранилище для неважных данных, которые могут быть с легкостью восстановлены.
Спасибо за внимание, я надеюсь этой информации вам хватит чтобы начать писать приложения ориентированные на данные для платформы Windows 8. Полезные ссылки вы найдете ниже.
Этот комментарий был удален автором.
ОтветитьУдалить