2

我正在使用 Silverlight 重写企业应用程序。该项目仍处于开发的早期阶段,但在应用程序启动时存在大量初始数据负载,因为它从服务器中提取了几组业务对象。其中一些数据集在用户设置后很少更改;比如用户使用的所有自定义数据类型的列表。

在这些情况下,想法是将数据对象(可能以序列化形式)缓存在独立存储中,这样在第一次加载应用程序后就无需等待对服务器的异步调用来获取数据。

我认为独立存储旨在存储配置数据,例如用户偏好,或在应用程序的浏览器内和浏览器外版本之间共享……它的工作原理很像 cookie 存储。

我主要担心的是我不确定独立存储的安全性,我不相信在其中缓存应用程序数据。公平地说,用户还可以访问 Silverlight .xap 文件。

这是隔离存储的适当用途,为什么或为什么不?

4

2 回答 2

3

如果您对这些警告感到满意,那么这是对隔离存储的合理使用。

我想到的第一个警告是,当用户在另一台机器上启动你的应用程序时,你存储在一台机器上的隔离存储中的任何内容都将不可用——你失去了 Web 应用程序相对于桌面安装应用程序的移动优势。如果用户花一些时间配置他们的偏好等,他们会因为切换到另一台计算机来查看您的 Web 应用程序而不得不重新做一遍而感到恼火。为了解决这个问题,您应该将用户的自定义设置复制到云存储中,以便可以将其复制到他们选择运行您的 Web 应用程序的任何机器上。将隔离存储视为正式存在于云中的数据的性能优化缓存。

我相信 Silverlight 隔离存储被写入到文件系统中用户私有数据区域的磁盘中。\users\\AppData 或类似的。这将使其与同一台机器上的其他用户隔离,但不会为同一用户运行的其他程序提供任何保护。我不记得 Silverlight 隔离存储是否在磁盘上加密。我对此表示高度怀疑。

第二个警告是 Silverlight 隔离存储有配额限制,默认情况下它相当小 (1MB)。可以通过调用IncreaseQuotaTo() 来增加配额,这将提示最终用户确定请求。

第三个警告是,如果您要将本地存储用作云中数据的缓存,则必须自己管理数据同步。如果用户在本地进行更改,您需要将其推送到云中的权限存储,并且您必须决定何时或多久从云中刷新本地缓存,以及当两者都已完成时该怎么做同时改变(碰撞)。

浏览器 cookie 存储并不是描述 Silverlight 隔离存储的好比喻。给定域的浏览器 cookie 附加到从客户端到服务器的每个 http 请求。cookie 会不断地传输到服务器。Silverlight isostorage 中的数据只能由客户端计算机上运行的 Silverlight 代码访问 - Silverlight 或浏览器绝不会将其传输到任何地方。

将 Silverlight 的隔离存储视为云数据的本地缓存,您应该没问题。将 isostorage 视为永久存储,您会激怒您的客户,因为数据不会随他们随处可见,他们可以使用您的 Web 应用程序。

于 2010-07-21T17:52:49.003 回答
1

不是您故事的完整答案,而是要考虑的数据点:

注意IsolatedStorage 的IO 速度。虽然已经为加速它付出了相当大的努力,但如果您计划进行多次小型读取/写入,您可能需要考虑其他选项,因为它可能非常慢。(或者使用适当的缓冲技术来确保您的读/写更大且不频繁。)

于 2010-07-22T00:12:07.027 回答