Silverlight隔离存储最佳实践?

时间:2011-05-05 16:49:21

标签: c# silverlight session isolatedstorage

我刚刚开始真正进入Silverlight开发,我有一个特定的用例,我需要为特定用户的“会话”存储几个对象或字符串集合。 我希望这是用户特定的,并且可以在整个Silverlight应用程序中访问。

我的第一个想法是在App.xaml上添加静态属性。

在用户登录时,我正在从API调用中检索此用户有权访问的对象列表,然后将其存储在App.xaml的静态属性中。

然后我可以在整个xaml页面中访问这些属性。

我的问题是,这真的是用户特定的吗? 这是最佳做法吗? 我应该在这种情况下使用隔离存储吗? 隔离存储的局限性是什么? 孤立存储本质上是用户特定的,正确的吗?

由于

1 个答案:

答案 0 :(得分:6)

隔离存储与用户配置文件一起存储在登录用户的计算机上。您可以在网站内按网站和/或每个应用程序存储数据;网站基本上被定义为XAP文件源URL,例如http://www.somedomain.com。应用程序将是一个实际的完全限定的XAP源,例如http://www.somedomain.com/ClientBin/App.Xap

可以从同一登录用户的IE,Safari等访问从Firefox编写的独立存储。默认情况下,您有1 MB。

使用IS存储数据时,您将使用流(二进制或文本)编写文件,但写入的文件不会存储在用户文件系统中保存的名称中。默认情况下,您可以获得1 MB的存储空间,但您可以从用户请求更多存储空间。你应该问你需要什么加上目前使用的间距。您只能要求用户通过用户交互(例如按钮单击)来增加配额。最好的做法是只询问您需要的东西。

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

您还应该处理用户拒绝为您提供所请求空间的情况。

您永远不应该假设存储的内容将始终存在,因为用户可以通过Silverlight插件清除其IS。此外,您可以完全清除IS或删除不再需要的文件。请记住这一点,因为用户无法仅删除IS中的某些项目,也没有“dir”命令或方式来查看您存储的文件;你需要知道这个名字。