应用程序状态(http://msdn.microsoft.com/en-us/library/ms178594.aspx)是否与使用System.Web.Caching API相同?
即
System.web.httpcontent.current.cache [somekey]?
答案 0 :(得分:3)
答案就在你自己的链接中。阅读它。
但是,在应用程序状态下存储大块数据可能会填满服务器内存,导致服务器将内存分页到磁盘。作为使用应用程序状态的替代方法,您可以使用ASP.NET缓存机制来存储大量应用程序数据。 ASP.NET缓存还将数据存储在内存中,因此非常快;但是,ASP.NET会主动管理缓存,并在内存不足时删除项目。
答案 1 :(得分:0)
不,他们不一样。
ASP.Net Cache对象专门用于缓存短暂或可以在指定时间内生存的内容或对象。如果需要释放资源,它将被垃圾收集器蚕食,并且永远不能保证你下次看到时放入缓存中的东西会存在。
System.Application是键值的全局集合,可用于以线程安全的方式将信息全局存储到所有用户(只要您安全地使用它)。但是,除非您明确删除它,否则不会从System.Application中删除任何内容。
答案 2 :(得分:0)
您可能意味着System.Web.Context
,而不是content
,Cache
与HttpApplicationState
不同。
应用程序状态适用于在应用程序生命周期内保持相当静态的项目(除非明确删除)。可以在您链接的页面中阅读,建议使用Application
:
存储少量经常使用的数据,这些数据不会从一个用户更改为另一个用户。
缓存本质上是更短暂的,并且应该用于寿命更短(几秒到几分钟)的内容,并且自动管理项目的删除(取决于配置)。
答案 3 :(得分:0)
不一样。
如果数据
您使用 HttpApplicationState 。
如果数据
然后使用缓存。
其他重要差异:
有关详情,请参阅etutorials.org上的这篇文章。
这个问题: ASP.NET Page.Cache versus Page.Application storage for data synchronization?
答案 4 :(得分:0)
实际上我会说应用程序状态的主要目的是向后兼容传统的ASP应用程序,我绝不会在新的ASP.NET应用程序中使用它。
正如其他受访者所指出的那样,Cache被主动管理,以便在内存不足时丢弃数据。
应用程序状态基本上等同于静态Hashtable,其锁定语义是从传统ASP继承的。
如果需要存储静态数据,将它存储为类的强类型静态字段而不是使用Application状态几乎总是更好。如果需要锁定,请使用.NET的标准同步机制。