2010-09-27 9 views
15

Ho usato NHibernate per un po 'di tempo, mi sto ancora chiedendo quali sono le differenze tra i provider di secondo livello della cache?Differenze tra i provider di cache di secondo livello di NHibernate

  • Alcuni si comportano meglio \ peggio?
  • Che cosa è popolare e perché?

Per chiarezza che sto parlando:

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

e sono sicuro che ce ne sono altri.

Grazie

risposta

12

Confrontando questi fornitori di cache bolle in modo efficace verso il basso per confrontando memcached vs prevalenza vs Velocity, ecc, e che non è realmente correlate a NHibernate.

Ecco alcuni motivi (affatto un elenco completo) per scegliere uno sopra gli altri:

Se si desidera mantenere le cose semplici e non si esegue la vostra applicazione in una fattoria, si potrebbe desiderare di utilizzare SysCache/Prevalence, che esegue in-proc. Se si utilizza MS SQL Server, utilizzare SysCache2.

Se è necessaria una cache enorme su molti server dedicati alla cache, è possibile utilizzare memcached, che può essere eseguito su Linux in modo da evitare costi di licenza.

Se l'applicazione viene eseguita su Azure o utilizza già AppFabric, è possibile utilizzare Velocity.

Personalmente preferisco fare il caching ad un livello più alto dell'accesso ai dati (solo quando veramente necessario), in modo da rendere la cache più intenzionale e significativa delle sole entità e per abbracciare più dell'accesso ai dati nella cache. In un sistema progettato correttamente, la memorizzazione nella cache può essere facilmente trasparente utilizzando decoratori o proxy.

+0

Non sono d'accordo con il primo paragrafo. Alcuni scenari possono essere un inferno senza cache, non importa come li codifichi. E l'alternativa è di solito una qualche forma di caching manuale, che di solito è peggiore per l'architettura. –

+0

@Diego: concesso, è un punto discutibile. Preferisco fare "caching manuale" in uno strato superiore per abbracciare più dell'accesso ai dati nella cache (ad es. Elaborazione pesante/servizi web). Questo caching manuale è il 99% delle volte un decoratore o un proxy, quindi non aggiunge troppi sovraccarichi all'architettura. –

+0

@Diego: BTW sarebbe un argomento eccellente per un post sul blog "NH cache di secondo livello: che cos'è e quando/perché/come applicarlo" ;-) –

Problemi correlati