Silverlight隔离存储最佳实践?

gho*_*_mv 3 c# silverlight session isolatedstorage

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

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

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

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

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

谢谢

Kei*_*ler 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 );
Run Code Online (Sandbox Code Playgroud)

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

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