3

System.Runtime.Caching.MemoryCache 被描述为一种用于非 Web 应用程序的 System.Web.Caching.Cache,但有什么区别呢?是否有理由不在 ASP.Net 应用程序中使用 System.Runtime.Caching.MemoryCache?

4

3 回答 3

2

我相信System.Runtime.Caching它实际上是更新的,并且是仿照System.Web.Caching的,不同之处在于您不必依赖 System.Web 程序集。此外,System.Runtime.Caching.MemoryCache是可扩展的,而您不能继承自System.Web.Caching.Cache

我的建议是,如果您有一个通用库,例如​​,同时用于 Web 和服务(例如),请使用,System.Runtime.Caching这样您就不必包含 System.Web 绒毛(如果您不需要它) )。

以下是有关该主题的一些讨论:dotnet System.Web.Caching.Cache vs System.RUntime.Caching.MemoryCache

MSDN:System.Runtime.Caching 命名空间

MSDN:System.Web.Caching 命名空间

于 2012-05-23T14:52:09.420 回答
1

是的,你当然可以。

至于不这样做的原因,它们并不完全相同,并且不共享相同的缓存优先级,因此如果您要同时使用它们,那么在内存不足的情况下,您可能会发现缓存中的内容被弹出你没想到的。

如果你只使用其中一种,你应该没问题。

于 2012-05-23T14:49:40.183 回答
1

不同之处在于它针对非 asp.net 应用程序的使用进行了优化,因为它不依赖于 System.Web。根据这个 MSDN page,另一个区别是您可以创建 MemoryCache 类的多个实例,以便在同一个应用程序和同一个 AppDomain 实例中使用。

因此,确实没有理由不在您的 asp.net 应用程序中使用 System.Web.Caching.Cache,但是是的,您也可以使用 System.Runtime.Caching.MemoryCache。

于 2012-05-23T14:50:16.883 回答