Различия между поставщиками кэшей для уровня 2-го уровня NHibernate

Я использую NHibernate какое-то время, мне все еще интересно, какие различия между провайдерами второго уровня кэширования?

  • Сделайте некоторые из них лучше\хуже?
  • Что популярно и почему?

Для ясности я говорю о:

  • NHibernate.Caches.MemCache
  • NHibernate.Caches.Prevalence
  • NHibernate.Caches.SharedCache
  • NHibernate.Caches.SysCache
  • NHibernate.Caches.SysCache2
  • NHibernate.Caches.Velocity

и я уверен, что есть другие.

Спасибо

Ответы

Ответ 1

Сравнение этих поставщиков кэшей эффективно сводится к сравнению memcached против распространенности vs Velocity и т.д., и это не связано с NHibernate.

Вот несколько причин (далеко не полный список), чтобы выбрать один из них:

Если вы хотите сохранить его простым и не запускать приложение в ферме, вы можете использовать SysCache/Prevalence, который запускается в proc. Если вы используете MS SQL Server, используйте SysCache2.

Если вам нужен огромный кеш на многих серверах с выделенным кешем, вы можете использовать memcached, который может работать в Linux, чтобы избежать затрат на лицензирование.

Если ваше приложение работает на Azure или уже использует AppFabric, вы можете использовать Velocity.

Лично я предпочитаю делать кеширование себя на более высоком уровне, чем доступ к данным (только когда это действительно необходимо), чтобы сделать кеширование более преднамеренным и значимым, чем просто сущности, и охватить больше, чем доступ к данным в кеше. В правильно спроектированной системе кеширование может быть легко прозрачным с использованием декораторов или прокси.