是否可以在Web服务中使用Cache?

时间:2011-09-05 11:35:19

标签: asp.net web-services caching

在我的webapplication中,我有一些存储在Page.Cache中的预先计算的值。在他的时刻,我必须将此功能移至webservice。

所以我需要在webservice中引入类似的功能 - 在第一次调用web方法时计算值并将其存储在Cache中。
是否可以在Web服务中将一些值放入缓存中(不在应用程序或会话中 - 我需要在一段时间间隔后清除这些值)?

4 个答案:

答案 0 :(得分:7)

即使您目前没有HttpContext,也可以通过静态HttpRuntime.Cache属性访问缓存。

答案 1 :(得分:5)

简而言之 - 是的,您可以在Web服务中使用缓存。您必须根据服务实现选择正确的缓存实现。例如,如果您使用的是ASP.NET Web服务,那么您可以使用ASP.NET Cache - 可以通过HttpContext.Current.Cache获得。

如果您正在使用WCF Web服务,那么您可能需要使用其他库(BTW,ASP.NET Web服务已过时,因此无论如何我都会建议使用WCF Web服务)。如果WCF服务标记为ASP.NET兼容,则ASP.NET基础结构及其缓存将可用。但您可以选择托管没有ASP.NET集成的WCF服务,在这种情况下,您可能需要查看不同的缓存API - 例如,System.Runtime.Caching如果您使用的是.NET 4(请参阅{{ 3}}用于使用内存缓存)否则您可以尝试quick tutorial

答案 2 :(得分:2)

你应该可以使用:

HttpContext.Current.Cache.Insert(strName, objItem, null,
     DateTime.Now.AddMinutes(intMinutes), Cache.NoSlidingExpiration)

以指定的时间间隔缓存项目。

答案 3 :(得分:1)

参考XML Web Service Caching Strategies

这篇文章似乎有点陈旧但很好。我希望你能找到你想要的东西。