Ответ 1
Сравнение этих поставщиков кэшей эффективно сводится к сравнению memcached против распространенности vs Velocity и т.д., и это не связано с NHibernate.
Вот несколько причин (далеко не полный список), чтобы выбрать один из них:
Если вы хотите сохранить его простым и не запускать приложение в ферме, вы можете использовать SysCache/Prevalence, который запускается в proc. Если вы используете MS SQL Server, используйте SysCache2.
Если вам нужен огромный кеш на многих серверах с выделенным кешем, вы можете использовать memcached, который может работать в Linux, чтобы избежать затрат на лицензирование.
Если ваше приложение работает на Azure или уже использует AppFabric, вы можете использовать Velocity.
Лично я предпочитаю делать кеширование себя на более высоком уровне, чем доступ к данным (только когда это действительно необходимо), чтобы сделать кеширование более преднамеренным и значимым, чем просто сущности, и охватить больше, чем доступ к данным в кеше. В правильно спроектированной системе кеширование может быть легко прозрачным с использованием декораторов или прокси.