Notre projet en cours au travail est un nouveau site Web MVC qui utilisera un service WCF principalement pour accéder à un système de facturation 3ème partie via un service Web ainsi qu'une petite base de données SQL pour la personnalisation de l'utilisateur. Le service WCF utilise nHibernate pour la base de données SQL.stratégies NHibernate dans une ferme web
Nous aimerions implémenter une sorte de batterie de serveurs Web pour l'équilibrage de charge ainsi que le basculement et la maintenance. J'essaie de décider de la meilleure façon de gérer la mise en cache et la concurrence de base de données de nHibernate si plusieurs services WCF sont en cours d'exécution.
Certains scénarios que j'ai pensé à ...
1) Plusieurs serveurs IIS, un serveur WCF. Avec cette configuration, le serveur WCF serait un point de défaillance unique, mais il n'y aurait aucun problème avec la mise en cache nHibernate ou la concurrence d'accès à la base de données.
2) Plusieurs serveurs IIS, chacun avec son propre service WCF. Cela supprime un seul point de défaillance, mais maintenant nHibernate sur une machine ne serait pas au courant des modifications de base de données effectuées par une autre machine.
Quelques solutions au numéro 2 serait d'utiliser un IStatelessSession donc nous ne pas faire de la mise en cache et NHibernate est toujours aller chercher directement à partir de la base de données. Cela pourrait être le plus faisable car notre base de données de personnalisation contient très peu d'objets. Je considère également un cache de second niveau tel que memcached ou Velocity, mais il est peut-être exagéré pour ce système.
Je suis en train de ce là-bas pour voir si quelqu'un a une expérience à faire ce genre d'architecture et d'obtenir quelques idées pour une solution. Merci!
"mais j'ai implémenté un cache de requête de second niveau avec nHibernate et ça marche très bien." Puis-je vous demander quelle implémentation de cache de deuxième niveau vous avez choisie et pourquoi? –
Memcahced http://memcached.org/ –