C# HttpContext.Current.Cache与HttpRuntime.Cache
我一直在读一些关于c#3.5中缓存的内容。我有点困惑,希望您能解释一下两者之间的区别C# HttpContext.Current.Cache与HttpRuntime.Cache,c#,asp.net-mvc,caching,C#,Asp.net Mvc,Caching,我一直在读一些关于c#3.5中缓存的内容。我有点困惑,希望您能解释一下两者之间的区别 HttpContext.Current.CachevsHttpRuntime.CachevsSystem.Web.Caching.Cache 此外,我已经阅读了在非web应用程序中使用上述任何一种方法,这是不推荐的,但它是有效的。缺点是什么?System.Web.Caching.Cache是为Web应用程序实现缓存的类型HttpContext.Current.Cache只是一个包装器,返回HttpRuntime
HttpContext.Current.Cache
vsHttpRuntime.Cache
vsSystem.Web.Caching.Cache
此外,我已经阅读了在非web应用程序中使用上述任何一种方法,这是不推荐的,但它是有效的。缺点是什么?
System.Web.Caching.Cache
是为Web应用程序实现缓存的类型HttpContext.Current.Cache
只是一个包装器,返回HttpRuntime.Cache
,它只是System.Web.Caching.Cache
的实例
更新
关于第二部分,请参阅
更新:为什么需要包装HttpRuntime.Cache?
在我个人看来,HttpContext
是传递给IHttpHandler.ProcessPostBack
的类型,而HttpApplication
公开了传递给IHttpModule.Init
的HttpContext
。这将确保使用方法注入注入所有依赖项。因此,他们引入了一定程度的间接性
处理程序和模块应该不知道承载它们的HttpRuntime。当您在ASP.NET页面中时,建议使用
this.page.Cache
而不是HttpContext.Current.Cache
或HttpRuntime.Cache
作为使用HttpContext的工具。Current将涉及解析当前线程的开销,而HttpRuntime.Cache
将创建外部依赖项Page.Cache
是用HttpContext.Cache
初始化的,它被传递到ProcessRequest
为什么HttpRuntime.Cache
需要包装?