在ASP.NET应用程序之外使用HttpRuntime.Cache可以吗?

Jak*_*urc 39 .net caching

Scott Hanselman 说是的.

将System.Web添加到非Web项目是让人们恐慌的好方法.另一种是在C#应用程序中添加对Microsoft.VisualBasic的引用.尽管如此,两者都是合理且有用的事情要做.

MSDN 说没有.

Cache类不适用于ASP.NET应用程序之外.它的设计和测试用于ASP.NET,以便为Web应用程序提供缓存.在其他类型的应用程序中,例如控制台应用程序或Windows窗体应用程序,ASP.NET缓存可能无法正常工作.

那我该怎么想?

Joe*_*ore 27

我意识到这个问题已经过时了,但为了帮助任何通过搜索找到这个问题的人,值得注意的是.net v4包含了针对此类场景的新通用缓存.它位于System.Runtime.Caching命名空间中:

https://msdn.microsoft.com/en-us/library/dd997357(v=vs.110).aspx

对默认缓存实例的静态引用是:MemoryCache.Default

  • @Juan - 是的,不幸的是它没有包含在客户端配置文件中.根据错误报告,微软计划最终将其移至那里.您可以通过投票显示对此修复的支持:https://connect.microsoft.com/VisualStudio/feedback/details/558309/move-system-runtime-caching-dll-to-client-framework (2认同)

Dor*_*oby 5

使用HttpRuntime.Cache应该没有任何问题.它是一个复杂的内存中哈希表,在Web上下文之外非常有用.不过,这可能是一个有点代码气味的引用HttpRuntime.Cache在非HTTP相关的应用程序,因此它可以是一个好主意来包装它背后的一些ICACHE界面和使用尽可能.