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

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

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

经测试的替代品:

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

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

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

专门从事这项任务的系统的任何消息? 任何可以做到这一点的好ORM?

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

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

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