如何从WCF返回HttpContext.Current.Cache?

时间:2009-01-29 08:45:20

标签: wcf iis caching

我有一个在IIS中托管的WCF服务,并希望返回驻留在IIS缓存中的数据(HttpContext.Current.Cache) 这种服务应该返回的最合适的选择是什么?

3 个答案:

答案 0 :(得分:14)

如果我是你,我不会依赖服务托管在IIS中的事实。如果您想使用其他技术托管WCF服务怎么办?我认为你应该查看memcached这是一个更通用的缓存解决方案,它适用于.NET。

无论如何,如果你真的想使用IIS缓存,请使用 System.Web.HttpRuntime.Cache 而不是HttpContext.Current.Cache,因为HttpContext并不总是可用。

另外,正如 cruizer 所说,只要对象可序列化,对象的实际类型就完全无关紧要了(也就是说,这些类是用[Serializable]装饰的()]属性)。 IIS缓存本身不需要可序列化的对象,但是WCF会这样做。

答案 1 :(得分:2)

您序列化对象以便传输它们,但不需要缓存可序列化的对象。

您的服务会调用您的业务逻辑以处理请求,但是通过网络传输的内容不应该是您的业务对象,而是您的服务数据合同。

包装缓存API并将其与HttpRuntime缓存分离。正如DrJokepu所说,如果你选择的话,可以通过HttpRuntime.Cache访问asp.net缓存。

答案 2 :(得分:-2)

当然你在缓存中存储的任何类型......它应该是可序列化的