データアクセスに(Fluent)NHibernateを使用しているこの管理サイトがあります。他の場所で述べたように、Configurationオブジェクトの作成により、SessionFactoryの初期化は遅くなります。推奨される解決策は、構成オブジェクトをディスクにシリアル化し、エンティティアセンブリまたは流暢な初期化アセンブリが変更されるまでこれを再利用することです。
理論的には、これらは非常にエレガントで魅力的に聞こえます。実際には、1エンティティのモデルでも、構成の逆シリアル化には約500ミリ秒かかり、SessionFactoryの作成にはさらに500ミリ秒かかります。(これは、シリアル化を行わない場合の起動時間に相当しますが、エンティティを追加すると、ゲインが明らかになると思います。)
IISがアプリケーションプールをリサイクルした後、新しい要求が着信するまでアプリケーションプールは再起動しません。したがって、IISのデフォルトのリサイクル管理(29時間ごと)と、管理者が1日に1回管理サイトにログインするというシナリオが考えられます。この1秒の遅延は、この管理者がログインするたびに発生し、開始サイトが遅いという印象を与えます。
では、IIS / WASに、次の要求が来るまで待つのではなく、リサイクルの一環として交換用のアプリケーションプールを実際に開始するように指示する方法があるのでしょうか。これは、WASが常に実行中のアプリケーションプールをできるだけ少なくしようとするという考えに反していることを認識していますが、問題は解決します(アプリケーションプールが起動するとすぐにServiceHostFactory + ServiceHostが作成されると想定しているため)。