2010-07-21 2 views
2

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

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

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

Моя основная забота заключается в том, что я не уверен в том, насколько безопасно изолированное хранилище, и я не доверяю кешированию данных приложения в нем. Справедливости ради, у пользователя также будет доступ к файлу Silverlight .xap.

Это подходящее использование для изолированного хранения, почему или почему нет?

ответ

3

Это справедливое использование изолированного хранилища, если вам удобно с оговорками.

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

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

Второе предупреждение состоит в том, что изолированное хранилище Silverlight имеет ограничение квоты, и по умолчанию оно довольно мало (1 МБ). Квоту можно увеличить с помощью вызова IncreaseQuotaTo(), который заставит конечного пользователя одобрить запрос.

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

Хранилище файлов cookie не является отличной метафорой для описания изолированного хранилища Silverlight. Куки-файлы браузера для данного домена прикрепляются к каждому HTTP-запросу, который делается от клиента к серверу. Файлы cookie постоянно передаются на сервер. Данные в isostorage Silverlight доступны только для кода Silverlight, запущенного на клиентской машине - он никогда нигде не передается Silverlight или браузером.

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

+0

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

+0

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

1

Не полный ответ на ваш рассказ, но точка данных, чтобы рассмотреть:

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