我正在开发一个Silverlight客户端和相关的ASP.NET Web服务(非WCF),需要实现一些包含用户偏好设置的功能,例如“收藏项”系统和是否需要自动换行。为了提供愉快的用户体验,我希望在会话之间保留这些设置。初步调查显示有两个主要可能性:
1. Silverlight独立存储 2. ASP.NET访问数据库
我知道选项2可能是最好的选择,因为它确保即使用户禁用了Silverlight的独立存储,他们的偏好设置仍然存在,但此时我想避免维护数据库的负担,并且我喜欢即使在没有服务器连接时也可以加载和编辑偏好设置的想法。然而,如果有理由认为现在采取这种方式比以后更可取,我也愿意接受。
我希望获得有关在任一情况下实现设置持久性的最佳建议。例如,如果使用独立存储,我应该使用XML格式还是其他文件布局来持久化设置;如果采用数据库方法,我是否必须设计一个设置表,或者ASP.NET中是否有内置机制支持此操作,并如何将偏好设置提供给客户端?
1. Silverlight独立存储 2. 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的内置部分提供在隔离存储中(在实现替代方案之后,我不知何故错过了这一点)。 下面我的答案 更详细地介绍了这一点。
虽然微软提供客户端设置持久性,但这并不一定是持久化用户首选项的最佳方法,我想征求更多意见和建议,所以我保留了这个问题。