我有一个在IIS中托管的WCF服务,并希望返回驻留在IIS缓存中的数据(HttpContext.Current.Cache) 这种服务应该返回的最合适的选择是什么?
答案 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)
当然你在缓存中存储的任何类型......它应该是可序列化的