我正在开发 Silverlight 客户端和相关的 ASP.NET Web 服务(不是 WCF),我需要实现一些包含用户首选项的功能,例如“最喜欢的项目”系统以及他们是否喜欢自动换行。为了提供愉快(而不是令人恼火)的用户体验,我想在会话中保留这些设置。一项简短的调查表明,主要有两种可能性。
- Silverlight 隔离存储
- ASP.NET 可访问的数据库
我意识到选项 2 可能是最好的选择,因为它确保即使用户禁用 Silverlight 的隔离存储,他们的偏好仍然存在,但我想避免此时维护数据库的负担,我喜欢这个想法即使服务器连接不可用,这些首选项也可用于加载和编辑。但是,我愿意接受有理由的论点,为什么现在而不是以后遭受这种打击可能更可取。
我正在寻找的是关于在任何一种情况下实现设置持久性的最佳方法的建议。例如,如果使用隔离存储,我应该使用 XML 格式还是其他文件布局来持久化设置?如果使用数据库方法,我是否必须设计一个设置表,或者 ASP.NET 中是否有内置机制来支持这一点,以及如何将首选项提供给客户端?
所以:
哪个解决方案是用户偏好持久性的更好解决方案?设置如何保留在该解决方案中,客户端如何访问和更新它们?
先前的研究
请注意,我已经对此事进行了一些先前的研究,并找到了以下链接,根据您阅读的文章,这些链接似乎支持任一解决方案。
- http://www.ddj.com/windows/208300036
- http://tinesware.blogspot.com/2008/12/persisting-user-settings-in-silverlight.html
更新
事实证明,微软已经在隔离存储中提供了设置持久性作为 Silverlight 的内置部分(我不知何故错过了它,直到实现了一个替代方案)。我在下面的回答对此有更多详细信息。
尽管 Microsoft 提供了客户端设置持久性,但我仍将问题保持开放,但这并不一定意味着这是保持用户偏好的最佳方法,我想就此征求更多意见和建议。