使用性能等内存缓存数据集并将其与数据库更改联系起来的最佳方法是什么?

时间:2011-09-05 20:40:23

标签: c# asp.net performance caching

有人在.Net中遇到一个开源项目或库,作为数据库和自动或按需请求的数据之间的缓存层,以便提高性能。

.Net堆栈可以像SqlDependencies和Cache一样使用,但两者都有问题。

经过测试的替代方案:

  • SqlDependency是基于表的,因此当表上的一条记录更新时,整个表都会失效。

  • Cache对象运行良好,但缺少对象管理功能来管理对象中的更改。

  • Cache中的DataTable可能是一个解决方案,但我想将缓存作为对象而不是DataRow来处理。

专门负责此任务的系统上的任何消息?任何可以做到这一点的好的ORM?

2 个答案:

答案 0 :(得分:2)

您可能需要查看AppFabric。其中一个组件是Velocity(一种研究内存分布式缓存)。它仅在Windows的服务器版本上受支持。

答案 1 :(得分:1)

OuputCaching是优化应用程序的一种非常好的方法。即使只是将页面缓存30秒,也会对负载较重的应用程序产生巨大影响。 VaryByCustom允许对数据缓存方式进行大量控制,.NET输出缓存引擎也是如此。

如果看到实时更改并不重要,我建议将其作为将数据保存在内存中的可能替代方案,即使这样,我也会考虑优化特定的数据或对象。将DataSet保留在内存中无法扩展 - 但当然这取决于您的要求。如果您只有一个小的DataSet并且可以将其缓存在Application cache中,那么这不是一个坏主意。