【问题标题】:When should I load data from isolated storage for Windows Phone 7?我应该何时从 Windows Phone 7 的独立存储中加载数据?
【发布时间】:2010-12-03 19:02:41
【问题描述】:

Microsoft 的最佳实践状态:

如果应用程序依赖于来自隔离存储的数据,则不应在 Launching 事件处理程序或 Activated 事件处理程序中加载此数据。磁盘操作可能需要几秒钟,并且这些事件在应用程序加载并处于活动状态之前被调用,因此在这些处理程序中访问独立存储会导致应用程序加载时的等待时间很长。相反,您应该在加载应用程序后从独立存储中异步加载数据。

为什么会这样,何时应该从隔离存储中读取数据?

我要加载的是手机用户是否将他们的用户名/密码保存到隔离存储中,并在第一个屏幕上预加载登录。什么时候应该执行此操作?

谢谢, 标记

【问题讨论】:

    标签: windows-phone-7 isolatedstorage


    【解决方案1】:

    首先,不要存储密码。曾经!任何地方!存储密码的加盐哈希。如果您需要存储它以传递给网络服务(或类似服务),让网络服务在成功登录时返回一个令牌并存储它。

    现在,您的实际问题。
    不过,您自己已经回答了第一部分。

    因为您希望应用程序具有响应性,所以当应用程序启动时,您应该及时执行 UI 线程之外的操作。

    应在最适合应用程序、数据量以及需要或更新数据的频率的时间从 IsolatedStorage 加载数据并将其保存到。

    在您的具体实例中,我不希望从孤立的存储中检索 2 个字符串会非常慢,因此我会在相关页面的 Loaded() 事件中执行它们的检索。

    如果您只是检索用户名和密码,我会考虑使用 IsolatedStorageSettings 来保存这些内容。

    如果您还有许多其他详细信息要存储并且几乎同时需要这些详细信息,您可能希望将它们全部存储在一起,以便一起检索它们。

    【讨论】:

    • 谢谢马特,很好的回答。是的,当/如果这件事变得不平凡时,我会存储一个加盐的哈希密码。
    【解决方案2】:

    将数据从隔离存储中加载到应用程序加载完毕后再加载的动机有两个方面。

    1. 在这些资源受限的设备上加载应用程序需要做很多工作。如果您的应用程序这样做是可行的,那么将任何操作推迟到应用程序响应之后将改善用户体验。还请注意,您有 5 秒的证书要求来显示某些东西,而 20 秒的时间来响应 - 有些设备比其他设备更慢/更快。

    2. 异步适用于任何重要的操作,这样您就不会阻塞 UI 线程和干扰并导致设备看起来没有完全响应。

    请记住,除了正常的低负载测试场景(例如同步邮件)之外,手机可能会在后台执行您没有考虑过的事情。

    我同意马特的观点,即为了登录凭据而加载 2 个字符串可能不会给您带来性能问题。

    如果您想非常勤奋,您可以在加载登录页面后异步加载该数据,并在检索该数据之前禁用控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 2012-11-16
      相关资源
      最近更新 更多