我有一个 silverlight 应用程序,用户将在各个时区中运行。
这些应用程序在启动时从服务器加载数据,然后在 IsolatedStorage 中缓存。
当我更改服务器上的数据时,我希望能够更改“上次更新时间”,以便所有silverlight客户下载最新数据下次他们查看这个日期。
但是,如果服务器位于纽约并且更新时间设置为“是”,我对如何处理时区问题感到困惑 2010-01-01 17:00:00 以及西雅图检查中的客户将其与 2010-01的当地时间进行比较-01 14:00:00 它不会更新,并将继续提供三个小时的旧数据。
我的解决方案是始终发布 UTC时间的更新时间,而不是服务器上的时间,然后使Silverlight应用检查使用 DateTime.UtcNow 。
这听起来是否容易,或者是它的问题,例如:计算机上未正确设置时区,因此SilverlightApp不报告正确的UTC时间。 根据经验,任何人都可以说使用DateTime.UtcNow这样的缓存刷新的可能性是多少?
如果DateTime.UtcNow不可靠,我将只使用递增“DataVersion”整数,但还有其他方案可以让时区同步下来有助于彻底了解如何在Silverlight应用程序中解决此问题。
答案 0 :(得分:2)
DateTime.UtcNow与客户端系统上的时钟一样可靠。所以问题完全独立于Silverlight或.NET,问题是您对客户机上的系统时钟有多信任?
您需要权衡机器用户可能错误地在机器上设置时间的风险,因为他们没有正确设置时区。这种风险完全是人性的。
使用递增版本号只有一个缺点,您需要先设置当前值,然后才能设置新值。如果这不是问题,那就去那个并消除你可能在时区附近的FUD。