【问题标题】:Which .Net caching technique is needed here这里需要哪种 .Net 缓存技术
【发布时间】:2013-01-15 07:43:46
【问题描述】:

我在 .Net 4.0 中有一个 WCF Web 服务。

我正在从中调用另一个 Web 服务,它正在向我发送一个 XML 对象(大约 50 KB)作为响应。

响应对象不太可能经常更改。所以我应该选择一种缓存技术来减少每次调用,它也会更快。

我了解到有许多可用的 .Net 缓存技术..有些也适用于 WCF 服务。

请指导我应该采用哪种类型的缓存技术?

【问题讨论】:

  • 你需要提供足够的关于你的对象的信息,以便海报推荐一些东西。其次,您是否评估了“许多 .Net 缓存技术”并发现了任何问题?
  • 它是一个 XML 对象...大约 50 KB...我没有评估任何...但是阅读了它们并不确定我应该实现哪个。
  • 服务的调用者是单个应用程序吗?单个服务器上是否只有该应用程序的一个实例?如果因为 IIS 回收应用程序而每隔几个小时就销毁一次缓存,这有什么大不了的吗?最佳解决方案取决于您的回答。
  • @ChrisPitman.. 不..我有一个网站,一些 Web 服务和一些窗口工具将使用这个 WCF 服务......缓存中的对象可能至少在几个星期..

标签: .net wcf caching asp.net-caching


【解决方案1】:

由于您只有一个服务需要访问此缓存,而且如果缓存每隔几个小时重置一次也没什么大不了的,您可以让事情变得非常简单。

最简单的解决方案是使用进程内内存缓存。它基本上是一个内存中的字典,您可以在其中存储任何值,但它还负责不占用太多内存并在条目太旧时过期。

Here is a good writeup 有一个如何使用它的例子。

【讨论】:

  • 我支持这个。您需要做的就是将 XML 存储在内存中的某个位置,因此下次需要获取它时,您可以查看缓存对象以查看它是否存在。
【解决方案2】:

由于缓存发生在您自己的服务器上,您将在某些类对象中使用反序列化的 xml。我认为最好的办法是在你的情况下使用 post sharp。 看到这个:http://www.sharpcrafters.com/postsharp/download

【讨论】:

  • Postsharp 不是关于缓存技术,而是关于面向方面的编程。当您有大量遵循缓存模式的代码时,您可以使用它来提供帮助,但我认为这不是一个有效的响应。
  • 是的@MattRoberts 感谢澄清我的回答,我的意思也和你写的一样。我的意思是 postsharp 将更容易以更少的代码进行缓存。
猜你喜欢
  • 1970-01-01
  • 2019-07-19
  • 1970-01-01
  • 2013-10-07
  • 2020-12-26
  • 2013-08-11
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多