現在進行中のプロジェクトは新しい MVC Web サイトで、主に WCF サービスを使用して、Web サービスを介してサード パーティの請求システムにアクセスし、ユーザーのパーソナライズ用に小さな SQL データベースを使用します。WCF サービスは、SQL データベースに nHibernate を使用します。
ロード バランシング、フェイルオーバー、およびメンテナンスのために、ある種の Web ファームを実装したいと考えています。複数の WCF サービスが実行されている場合に、nHibernate のキャッシュとデータベースの同時実行を処理する最善の方法を決定しようとしています。
私が考えていたいくつかのシナリオ...
1) 複数の IIS サーバー、1 つの WCF サーバー。このセットアップでは、WCF サーバーが単一障害点になりますが、nHibernate キャッシュまたはデータベースの同時実行性には問題はありません。
2) それぞれ独自の WCF サービスを備えた複数の IIS サーバー。これにより、単一障害点が取り除かれますが、あるマシンの nHibernate は、別のマシンによって行われたデータベースの変更を認識できなくなります。
番号 2 に対するいくつかの解決策は、IStatelessSession を使用することです。これにより、キャッシングを行わず、nHibernate が常にデータベースから直接フェッチします。パーソナライゼーション データベースにはほとんどオブジェクトが含まれていないため、これが最も実現可能性があります。memcached や Velocity などの第 2 レベルのキャッシュも検討していますが、このシステムではやり過ぎかもしれません。
この種のアーキテクチャを実行した経験があるかどうかを確認し、解決策のアイデアを得るために、これを公開しています。ありがとう!