我正在使用Silverlight重写一个企业应用程序。该项目仍处于开发的早期阶段,但在应用程序启动时会有大量的初始数据负载,因为它从服务器中提取了几组业务对象。其中一些数据集在用户设置后很少更改;比如用户正在使用的所有自定义数据类型的列表。
在这些情况下,想法是将数据对象(可能以序列化形式)缓存到独立存储中,这样就不需要等待对服务器的异步调用来在第一个应用程序加载后获取数据。
我认为隔离存储是为了存储配置数据,比如用户偏好,或者在浏览器内和浏览器外版本的app...that之间共享它的工作方式很像一个cookie商店。
我主要担心的是,我不确定独立存储有多安全,并且我不信任在其中缓存应用程序数据。为了公平起见,用户还可以访问Silverlight .xap文件。
这是否适合使用独立存储,为什么或为什么不合适?
发布于 2010-07-22 01:52:49
如果您对这些注意事项感到满意,那么这是独立存储的合理使用。
我脑海中的第一个警告是,当用户在另一台机器上启动你的应用程序时,你在一台机器上的隔离存储中存储的任何东西都将不可用-你失去了web应用程序相对于桌面安装的应用程序的移动优势。如果用户花了一些时间来配置他们的首选项等,他们会因为切换到不同的计算机来查看你的web应用程序而不得不重新来过,这会激怒他们。为了解决这个问题,你应该将用户的自定义复制到云存储中,以便可以将其复制到他们选择在其上运行web应用程序的任何机器上。将隔离存储作为正式驻留在云中的数据的性能优化缓存。
我相信Silverlight独立存储被写入到文件系统中用户私有数据区的磁盘中。\users\AppData或类似文件。这将使它与同一台计算机上的其他用户隔离开来,但不会针对为同一用户运行的其他程序提供任何保护。我不记得Silverlight独立存储是否在磁盘上加密了。我对此深表怀疑。
第二个警告是Silverlight独立存储有一个配额限制,默认情况下它是相当小的(1MB)。可以通过调用IncreaseQuotaTo()来增加配额,这将提示最终用户确认请求。
第三个警告是,如果您打算使用本地存储作为云中数据的缓存,则必须自己管理数据同步。如果用户在本地进行更改,您需要将其推送到云中的权限存储中,并且您必须决定何时或以何种频率从云中刷新本地缓存,以及当两者同时更改时该如何处理(冲突)。
浏览器cookie存储并不是描述Silverlight独立存储的一个很好的比喻。给定域的浏览器cookie被附加到从客户端到服务器的每个http请求。cookies被不断地传输到服务器。Silverlight isostorage中的数据只能由运行在客户端计算机上的Silverlight代码访问- Silverlight或浏览器永远不会将其传输到任何地方。
把Silverlight的独立存储当做云数据的本地缓存,你应该没问题。把isostorage当做一个永久的存储,你会激怒你的客户,因为数据不会跟随他们到他们可以使用你的web应用的任何地方。
发布于 2010-07-22 08:12:07
不是你故事的完整答案,而是一个需要考虑的数据点:
注意IsolatedStorage的IO速度。虽然已经投入了相当大的精力来加速它,但如果您计划进行多次小型读/写,则可能需要考虑其他选择,因为它可能非常慢。(或者使用适当的缓冲技术,以确保您的读/写更大且不频繁。)
https://stackoverflow.com/questions/3301957
复制相似问题