Рекомендации по использованию изолированного хранилища Silverlight? - PullRequest
3 голосов
/ 05 мая 2011

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

Моей первой мыслью было добавить статические свойства в App.xaml.

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

Тогда я смогу получить доступ к этим свойствам на страницах xaml.

Мой вопрос: действительно ли это специфично для пользователя? Это лучшая практика? Должен ли я использовать изолированное хранилище в этом случае вместо этого? Каковы ограничения изолированного хранения? Изолированное хранилище, по своей природе, зависит от пользователя, правильно?

Спасибо

1 Ответ

6 голосов
/ 05 мая 2011

Изолированное хранилище хранится с профилем пользователя на компьютере вошедшего в систему пользователя. Вы можете хранить данные для каждого сайта и / или для каждого приложения на сайте; веб-сайт по существу определяется как URL-адрес источника файла XAP, например http://www.somedomain.com.. Приложением может быть фактический полностью квалифицированный источник XAP, например http://www.somedomain.com/ClientBin/App.Xap.

.

Изолированное хранилище, написанное из Firefox, будет доступно из IE, Safari и т. Д. Того же вошедшего в систему пользователя. По умолчанию у вас есть 1 МБ.

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

var is = IsolatedStorageFile.GetUserStoreForApplication();
var freespace = is.AvailableFreeSpace;
var whatyouneed = 10485760; // Request 10 MB
is.IncreaseQuotaTo( is.Quota + whatyouneed );

Вам также следует обращаться с ситуациями, когда пользователь отказывается предоставить запрошенное вами пространство.

Вы никогда не должны предполагать, что что-то сохраненное всегда будет там, так как пользователи могут очистить свой IS через плагин Silverlight. Кроме того, вы можете полностью очистить IS или удалить файлы, которые вам больше не нужны. Помните об этом, поскольку у пользователя нет возможности удалить только определенные элементы в IS, а также нет команды или способа «dir», чтобы увидеть, какие файлы вы сохранили; вам нужно знать имя.

...