.NET的缓存框架

时间:2010-03-04 17:28:43

标签: .net asp.net caching ncache

我打算开发一个Web服务,我需要在内存缓存中使用,.NET提供了哪些不同的缓存框架,我使用了Microsoft Enterprise Library Cache块,还评估了NCache用于分布式环境。

我的核心要求是使用缓存数据的可靠性,我正在考虑使用Enterprise Lib Cache块数据库数据存储来保持工作进程重新启动时的持久性。

任何选项??

4 个答案:

答案 0 :(得分:4)

您的缓存是易失性数据存储,您应该编写软件以使其显示缓存不可用。 e.g。

public DtoThing GetSomeData(string parameters)
{
   if (<check cache for data> == <not there>)
     return <get data from persistent store>
   else
     return <get data from cache>
}

如果您使用数据库作为缓存的后备存储,您基本上只是放弃了使用缓存的所有好处。当你说缓存需要可靠时,你是说要更新需要保持一致,还是数据需要始终在缓存中?如果是前者,只要您以只有一条路径来更新数据的方式编写软件,就可以很容易地确保发生这种情况,然后该路径可以在成功执行对持久性的写入时使缓存无效数据存储。

答案 1 :(得分:3)

我有使用Microsoft的企业库缓存块的经验,它对我来说很好。 EntLib配置有时可能有点冗长,但它可以完成工作。您是否有其他特殊原因寻找其他东西?

答案 2 :(得分:1)

一对夫妇浮现在脑海中:

1)Memcached

2)Enterprise Library Caching Application Block

答案 3 :(得分:0)

这类问题有很多潜在的解决方案。你提到过看NCache;如果你有时间,请查看Oracle Coherence,这是NCache试图复制的产品; - )

我的建议是,除非您需要分布式缓存的好处,否则使用单进程内存缓存会更简单。

为了防止你好奇,早期讨论NCache的起源:http://www.theserverside.com/news/thread.tss?thread_id=43950