【发布时间】:2011-06-16 21:22:16
【问题描述】:
我有一个托管在 IIS 中的 WCF 服务,并希望返回驻留在 IIS 缓存中的数据 (HttpContext.Current.Cache) 该服务应该返回的最合适的类型选择是什么?
【问题讨论】:
我有一个托管在 IIS 中的 WCF 服务,并希望返回驻留在 IIS 缓存中的数据 (HttpContext.Current.Cache) 该服务应该返回的最合适的类型选择是什么?
【问题讨论】:
如果我是你,我不会依赖服务托管在 IIS 中这一事实。如果您想使用其他技术托管您的 WCF 服务怎么办?我认为您应该查看memcached,这是一个更通用的缓存解决方案,它适用于 .NET。
无论如何,如果你真的想使用 IIS 缓存,请使用 System.Web.HttpRuntime.Cache 而不是 HttpContext.Current.Cache,因为 HttpContext 并不总是可用的。
另外,正如 cruizer 所说,你的对象的实际类型是完全不相关的,只要它们是 serializable (也就是说,类用 [Serializable ()] 属性)。 IIS 缓存本身不需要可序列化的对象,但 WCF 需要。
【讨论】:
您序列化对象以传输它们,但无需缓存可序列化对象。
您的服务调用您的业务逻辑以处理请求,但通过网络传输的不应该是您的业务对象,而是您的服务的数据合同。
包装您的缓存 API 并将其与 HttpRuntime 缓存分离。正如DrJokepu所说,如果选择的话,通过HttpRuntime.Cache访问asp.net缓存。
【讨论】:
当然,无论你存储在缓存中的什么类型……它都应该是可序列化的
【讨论】: