6

我一直在阅读一些关于 c# 3.5 中的缓存的信息。有点困惑,希望能澄清一下两者之间的区别

HttpContext.Current.Cache对比HttpRuntime.Cache对比System.Web.Caching.Cache

此外,我已阅读不建议在非 Web 应用程序中使用上述任何内容,但它可以工作。有什么缺点?

4

1 回答 1

11

System.Web.Caching.Cache是为 Web 应用程序实现缓存的类型。 HttpContext.Current.Cache只是一个包装器和返回HttpRuntime.Cache,它只是System.Web.Caching.Cache.

更新

请参阅在 ASP.NET 应用程序之外使用 HttpRuntime.Cache 是否可以?你的第二部分。

更新:为什么需要包装 HttpRuntime.Cache?

在我的个人意见中,是HttpContext传递给IHttpHandler.ProcessPostBackHttpApplication暴露的类型。这将确保使用方法注入注入所有依赖项。因此,他们引入了一定程度的间接性。HttpContextIHttpModule.Init

处理程序和模块应该不知道托管它们的 HttpRuntime。当您在 ASP.NET 页面中时,建议改用this.Page.CacheHttpContext.CurrentHttpContext.Current.CacheHttpRuntime.Cache使用 HttpContext.Current 会涉及解析当前线程的开销并HttpRuntime.Cache会创建外部依赖项。Page.CacheHttpContext.Cache传递给的ProcessRequest

于 2012-04-25T06:17:26.103 回答