2010-09-27 6 views
15

J'ai utilisé NHibernate pendant un moment maintenant, je me demande toujours quelles sont les différences entre les fournisseurs de cache de second niveau?Différences entre les fournisseurs de cache de second niveau NHibernate

  • Certains sont-ils plus performants?
  • Qu'est-ce qui est populaire et pourquoi?

Pour plus de clarté, je parle:

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

et je suis sûr qu'il y en a d'autres.

Merci

Répondre

12

ces fournisseurs de Comparaison cache se résume efficacement vers le bas pour la comparaison memcached vs vs prévalence vitesse, etc, et qui ne sont pas vraiment liés à NHibernate.

Voici quelques raisons (pas une liste complète) pour choisir un sur les autres:

Si vous voulez rester simple et ne pas exécuter votre application dans une ferme, vous pouvez utiliser SysCache/Prevalence, qui s'exécute dans-proc. Si vous utilisez MS SQL Server, utilisez SysCache2.

Si vous avez besoin d'un cache important sur de nombreux serveurs dédiés au cache, vous pouvez utiliser memcached, qui peut s'exécuter sous Linux afin d'éviter les coûts de licence.

Si votre application s'exécute sur Azure ou utilise déjà AppFabric, vous pouvez utiliser Velocity. Personnellement, je préfère faire la mise en cache moi-même à un niveau plus élevé que l'accès aux données (uniquement lorsque cela est vraiment nécessaire), pour rendre la mise en cache plus intentionnelle et significative que les entités. Dans un système correctement conçu, la mise en cache peut être facilement transparente en utilisant des décorateurs ou des mandataires.

+0

Je ne suis pas d'accord avec le premier paragraphe. Certains scénarios peuvent être un enfer sans mise en cache, peu importe comment vous les codez. Et l'alternative est généralement une forme de mise en cache manuelle, ce qui est généralement pire pour l'architecture. –

+0

@Diego: accordé, c'est un point discutable. Je préfère faire de la "mise en cache manuelle" dans une couche supérieure pour englober plus que l'accès aux données dans le cache (par exemple des services de traitement lourd/web). Cette mise en cache manuelle est 99% du temps un décorateur ou un proxy, donc il n'ajoute pas trop de surcharge à l'architecture. –

+0

@Diego: BTW cela ferait un excellent sujet pour un blog "NH 2e niveau de cache: ce que c'est et quand/pourquoi/comment l'appliquer" ;-) –

Questions connexes