AppFabric vs asp.net缓存具有sqldependency性能

时间:2011-09-28 21:49:29

标签: asp.net performance caching appfabric

我正在制定一项计划,通过为WCF Web服务缓存用户数据库来提高Web应用程序的性能和可伸缩性。目标是通过访问此数据inProc与数据库服务器的往返来提高性能,并通过减少数据库服务器上的负载来提高服务的可伸缩性,从而允许添加更多Web服务器以增加规模。

在研究AppFabric时,我真的没有看到我的情况中的价值,因为它似乎在大多数情况下,我只是用往返缓存集群来替换数据库的往返(看起来像它甚至可能比db更有开销来保持节点同步。

对于性能问题,似乎使用asp.net缓存(正在进行中)将比到缓存集群的往返要快得多,即使数据在这些服务器上的内存中,即使某些它在本地缓存(我相信它仍然会从网络应用程序中退出)。

对于可伸缩性问题,似乎更容易将相同的Web服务器添加到Web场(每个缓存正在处理的用户数据),而不是单独管理缓存集群,这会增加复杂性。

话虽如此,根据我的既定目标,有人可以解释为什么我会选择一种方法而不是另一种方法吗?如果您推荐使用AppFabric方法,您能否解释一下性能如何比在正在进行的asp.net缓存中存储数据更好。

谢谢!

3 个答案:

答案 0 :(得分:2)

你是对的,App Fabric缓存存储在进程外。

当请求进入app fabric缓存项时,首先查找项目的位置,然后使用wcf net.tcpip调用来获取项目。因此,它会比asp.net缓存慢。但有时appfabric缓存更好:

  • 当应用程序池被回收时,您不会丢失缓存。
  • 如果您有100个Web服务器,那么您需要从数据库中获取一次数据,而不是100次
  • 如果您运行的是Windows企业版,则在计算机出现故障时不会丢失缓存

答案 1 :(得分:1)

我在codeproject上找到了this topic。希望它能回答你的问题

答案 2 :(得分:0)

您应该将NCache视为另一种选择。 NCache是​​一种速度极快的内存分布式缓存,可以减少与数据库相关的性能瓶颈,增强应用程序的可伸缩性。

就使用asp.net缓存而言,你应该记住它的局限性。它只适用于小型网络农场。但是当服务器数量增长时,asp.net缓存可能由于其进程内性质而导致一些性能和可伸缩性问题。在更大的Web园中,您需要具有内存中的分布式缓存。 Read this以供参考