У меня есть этот сайт администрирования, который использует (Свободно) NHibernate для доступа к данным. Как было указано в другом месте , инициализация SessionFactory происходит медленно из-за создания объекта конфигурации. Предлагаемое решение состоит в том, чтобы сериализовать объект конфигурации на диск и затем использовать его до тех пор, пока не будет изменена сборка объекта или текущие изменения сборки инициализации.
Теоретически это звучит очень элегантно и привлекательно. На практике даже при использовании модели с 1 сущностью десериализация конфигурации занимает около 500 мс, а создание SessionFactory - еще 500 мс. (Это сравнимо со временем запуска без сериализации, но я подозреваю, что выигрыш будет очевиден, как только я добавлю туда больше сущностей.)
После того, как IIS перезапускает мой пул приложений, он не запускается снова до тех пор, пока не поступит новый запрос. Таким образом, с управлением перезапусками IIS по умолчанию (каждые 29 часов) и вероятным сценарием входа администратора на мой сайт администрирования один раз в день задержка в 1 с будет происходить почти каждый раз, когда администратор входит в систему, создавая впечатление медленного запуска сайта.
Итак, мне интересно, есть ли способ сказать IIS / WAS, чтобы фактически запустить заменяемый пул приложений как часть перезапуска, а не ждать, пока не поступит следующий запрос? Я понимаю, что это противоречит идея о том, что WAS пытается сохранить как можно меньше одновременно работающих пулов приложений, но это решит мою проблему (так как я предполагаю, что мой ServiceHostFactory + ServiceHost будет создан сразу после запуска пула приложений).