【问题标题】:How do I make a client-side helper class in Silverlight?如何在 Silverlight 中创建客户端帮助程序类?
【发布时间】:2010-01-08 22:20:28
【问题描述】:

在 Silverlight 中,我异步调用启用了 Silverlight 的 WCF 服务来检索例如组合框的值列表。在服务器上,我缓存这些值以提高性能。但我想将它们缓存在客户端上以防止不必要的往返。

现在,我了解如何使用本地存储来缓存它们,除了我不希望我的 xaml 应用程序的代码隐藏中的所有“如果在本地存储中,则返回本地存储值,否则从服务器异步获取值”的东西。
因此,我尝试将该代码移至帮助程序类,但异步调用需要一个回调,这是我迷路的地方。我尝试将通用 EventHandler 传递给我的助手类,但助手类方法确实需要是静态的。所以,这让我失望。我的辅助方法是否需要是非静态的,如果是,我是否需要担心线程安全?啊!太多问题!哈哈。无论如何,我敢打赌外面的一些聪明人可以告诉我一个更好的方法来解决这个问题!提前致谢。

【问题讨论】:

  • 是的,Silverlight 中的异步一切模型总是让人们望而却步。我曾经在 Silverlight 中建立了一个嵌入式缓存层,曾经我曾经工作过……但我不再是那里的员工,所以……为你感到难过。 :-(
  • 韦德,你还需要这方面的帮助吗?
  • 不,不是特别的。我听说 RIA 服务可以解决其中的一些问题,所以我可能需要重新考虑我对使用 beta 产品的立场。谢谢。

标签: c# .net wcf silverlight


【解决方案1】:

我过去做过一个主要的 Silverlight 应用程序。它告诉我,你不应该与系统作斗争。

如果我没记错的话,Silverlight 本身使用浏览器网络层连接到互联网。因此,您仍然可以利用 - Silverlight 仍然尊重 - 具有适当缓存控制标头等的东西。

所以根据我的经验,我建议您尝试使服务器组件(WCF 服务器)进行适当的输出缓存 ala ASP.NET 样式和 Silverlight 中的网络层和托管浏览器会自动为您处理缓存。

RESTful WCF 模式可能会给您带来更好的运气,因为您可以自始至终利用适当的 HTTP 缓存,请参阅这篇博文:REST in WCF – Part X – Supporting Caching and Conditional GET。

这也使您的代码不那么复杂,因为您不必再​​向系统添加另一个复杂层并驯服它以使用令人困惑的 XAML 绑定系统。

【讨论】:

  • 很好的建议。我想你是正确的。我将暂时避免基于代码的缓存,并使用 HttpWatch 之类的东西来看看会发生什么。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 2011-09-10
  • 1970-01-01
  • 2013-07-09
相关资源
最近更新 更多