2010-09-27 31 views
15

我一直在使用NHibernate一段時間了,我仍然想知道二級緩存提供程序之間的區別是什麼?NHibernate二級緩存提供程序差異

  • 做一些執行更好\更糟?
  • 什麼是流行的,爲什麼?

爲了清楚我說的是:

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

我確定還有其他人。

感謝

回答

12

比較這些緩存提供有效歸結爲Memcached的比較盛行VS VS速度等,這是不是真的與NHibernate的。

這裏有一些原因(絕不是一個完整的列表)來挑一個比其他人:

如果你想保持它的簡單和不運行的一個農場在您的應用程序,你可能想使用SysCache/Prevalence,它運行在proc中。如果您使用MS SQL Server,請使用SysCache2。

如果您需要跨緩存專用服務器的巨大緩存,則可能需要使用可在Linux上運行的memcached,以避免許可成本。

如果您的應用程序在Azure上運行或已經使用AppFabric,則可能需要使用Velocity。我個人更喜歡在比數據訪問更高的層次上進行緩存(只有在真正需要的時候),才能使緩存比實體更有意和更有意義,並且在緩存中擁有更多的數據訪問權限。在設計合理的系統中,緩存可以使用裝飾器或代理輕鬆透明。

+0

我不同意第一段。不管你如何編碼,一些場景可能沒有緩存而是地獄。另一種選擇通常是某種形式的手動緩存,通常這種架構更糟糕。 – 2010-09-27 18:10:58

+0

@Diego:理所當然,這是一個有爭議的觀點。我更喜歡在更高層中進行「手動緩存」,以便在緩存中擁有不止數據訪問權限(例如,重處理/ Web服務)。這種手動緩存是裝飾器或代理的99%,所以它不會爲架構增加太多的開銷。 – 2010-09-27 18:31:58

+0

@Diego:BTW,這將成爲一個優秀的話題博客文章「NH 2級緩存:這是什麼時候/爲什麼/如何應用它」 ;-) – 2010-09-27 18:33:01

相關問題