我一直在使用NHibernate一段时间了,我仍然想知道二级缓存提供商之间的差异是什么?
做一些表现更好\更糟吗?
什么是受欢迎的,为什么?
为清楚起见,我在谈论:
NHibernate.Caches.MemCache
NHibernate.Caches.Prevalence
NHibernate.Caches.SharedCache
NHibernate.Caches.SysCache
NHibernate.Caches.SysCache2
NHibernate.Caches.Velocity
我相信还有其他人.
谢谢
比较这些缓存提供程序有效地归结为比较memcached vs prevalence vs Velocity等,这与NHibernate无关.
以下是一些原因(绝不是完整的清单)来挑选其他原因:
如果您想保持简单并且不在服务器场中运行应用程序,则可能需要使用在进程中运行的SysCache/Prevalence.如果您使用MS SQL Server,请使用SysCache2.
如果您需要在许多缓存专用服务器上安装大量缓存,您可能需要使用可在Linux上运行的memcached,这样您就可以避免许可成本.
如果您的应用程序在Azure上运行或已使用AppFabric,则可能需要使用Velocity.
就个人而言,我更喜欢在比数据访问更高的层次上进行缓存(仅在真正需要时),以使缓存比仅仅实体更有意义和有意义,并且不仅仅包含缓存中的数据访问.在设计合理的系统中,使用装饰器或代理可以轻松实现缓存.