代码之家  ›  专栏  ›  技术社区  ›  Jeff Yates

在Silverlight中保留用户首选项

  •  8
  • Jeff Yates  · 技术社区  · 15 年前

    我正在开发一个Silverlight客户端和关联的ASP.NET Web服务(而不是WCF),我需要实现一些包含用户首选项的功能,例如“最喜欢的项目”系统,以及它们是否希望换行。为了让用户体验愉快(而不是恼怒),我希望在不同的会话中保持这些设置。一个简短的调查表明有两种主要的可能性。

    1. Silverlight独立存储
    2. ASP.NET可访问数据库

    我意识到选项2可能是最好的选项,因为它可以确保即使用户禁用了Silverlight的独立存储,他们的首选项仍然存在,但我想避免此时维护数据库的负担,而且我喜欢这样的想法,即即使在服务器连接处于不可用。然而,我愿意接受有理由的论据,为什么它可能更倾向于现在而不是稍后采取这种打击。

    我要寻找的是关于在这两种情况下实现设置持久性的最佳方法的建议。例如,如果使用独立存储,我应该使用XML格式还是其他文件布局来持久化设置;如果使用数据库方法,我必须设计一个设置表还是ASP.NET中有内置机制来支持这一点,以及如何为客户机提供首选项?

    所以:

    哪个解决方案是更好的用户偏好持久性解决方案?如何在该解决方案中持久化设置,以及客户机如何访问和更新这些设置?

    前期研究

    请注意,我之前对这个问题进行了一些研究,发现了以下链接,这些链接似乎支持两种解决方案,这取决于您阅读的是哪篇文章。

    更新

    事实证明,作为Silverlight的内置部分,微软在独立存储中提供了设置持久性(直到实现了一个替代方案之后,我才有所遗漏)。 My answer below 对此有更多详细信息。

    尽管微软提供了客户端设置持久性,但我仍然把这个问题保持在开放状态,这并不意味着这是保持用户首选项的最佳方法,我想对此提出更多的意见和建议。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Jeff Yates    15 年前

    在进一步研究和实现我自己的基于XML文件的设置持久性之后,使用 IsolatedStorage ,我发现了 IsolatedStorageSettings 类与 IsolatedStorageSettings.ApplicationSettings 对象,它是一个键/值集合,专门用于存储用户特定的应用程序设置。

    现在一切似乎都很明显了。当然,从长远来看,使用服务器数据库备份和恢复设置的机制将是这个客户端设置持久性的一个很好的增强。

        2
  •  1
  •   Rex M    15 年前

    我认为一般情况下,默认情况下是存储在服务器上;只有当有特定的令人信服的原因试图存储在客户机上时,我们才应该这样做。你越依赖于储存在你无法控制的介质中,你就越有可能承担风险。

    既然已经说过了,并且把我自己放在论点的“数据库”一方,我会问数据库的缺点是什么?你提到过使用XML——你的数据只是半结构化的吗?如果是这样,为什么不将XML存储在SQL数据库中?按照大多数标准,设置这么简单的东西通常不会被视为“负担”。一个简单的Web服务可以充当您的Silverlight客户端和设置数据库之间的中间人。

        3
  •  1
  •   Greg Fleming    15 年前

    如果用户在脱机时可以访问其首选项是您的一项重要功能,那么看起来独立存储是您的选择。如果更重要的是用户能够保存首选项,即使他们关闭了独立存储(这真的是个问题吗?我很想打电话给Yagni,但我对Silverlight平台没有太多经验…)然后你需要托管一个数据库。如果这两者都很重要,那么您可能正在寻找某种混合解决方案;使用独立存储(如果可用),然后返回到数据库。

    换句话说,我认为应用程序的需求比一些抽象的最佳实践更重要。

    推荐文章