Silverlight隔离存储最佳实践?

3
我刚开始深入了解Silverlight开发,有一个用例需要为特定用户的“会话”存储一些对象或字符串集合。我希望这是用户特定的并且可以在整个Silverlight应用程序中访问。
我的第一个想法是在App.xaml上添加静态属性。
在用户登录时,我从API调用中检索此用户可以访问的对象列表,然后将其存储在App.xaml的静态属性中。
然后我可以在xaml页面中访问这些属性。
我的问题是,这是否真正是用户特定的? 这是最佳实践吗? 在这种情况下,是否应该使用隔离存储? 隔离存储的限制是什么? 隔离存储本质上是用户特定的,对吗?
谢谢
1个回答

6
孤立存储是与已登录用户的机器上的用户配置文件一起存储的。您可以在每个网站和/或网站内应用程序中存储数据;网站基本上被定义为XAP文件源URL,例如http://www.somedomain.com。应用程序将是实际的完全限定XAP源,例如http://www.somedomain.com/ClientBin/App.Xap
从Firefox编写的隔离存储将可从IE、Safari等浏览器访问同一已登录用户。默认情况下,您有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”命令或查看存储文件的方法;你需要知道文件名。


那么,按照我现在的做法继续下去可能会更好,对吗? 在用户登录时,检索数据,将App.xaml静态属性设置为检索到的数据,然后通过这种方式在整个站点中访问它?这对于应用程序的其他用户来说是不可访问的,对吗?因为他们会启动一个全新的App.xaml实例。 - ghost_mv
1
有许多地方可以将这种类型的信息嵌入到运行客户端中。隔离存储、静态属性可以嵌入到App.xaml.cs中。请记住,在SL中您不再拥有无状态应用程序,因此可以像在App部分类中添加一个属性(public static string City)一样进行操作,并且可以在整个应用程序中访问它,因为它是单例模式。 - Keith Adler
好的,感谢您的帮助。我需要那个验证来确认我做得正确。再次感谢。 - ghost_mv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接