Я разработал API-интерфейс REST WCF, в котором NHibernate используется в качестве слоя персистентности. В настоящее время я пользуюсь службой Per-Session, но прочитал, что службы Per-Call - это то, что я делаю.
Есть 2 вещи (вероятно, очень связанные), которые мне не нравятся, и я хочу удалить об этом.
При первом вызове API для ответа требуется около 20 секунд, что может означать, что он загружает библиотеки и создает классы. Могу ли я сделать это до того, как произойдет звонок? У меня уже есть статический конструктор в классе реализации ServiceContract, но это не уменьшает время его загрузки.
При последующих вызовах, если я перестану звонить в службу примерно на 10 минут, время вызова снова изменится с 1 до более 20 секунд. Это моя самая большая проблема, поскольку клиенты должны иметь тайм-аут 30 секунд, что для пользователей может показаться, что приложение аварийно завершилось.
Как я могу улучшить это? Есть ли у вас какие-либо советы по улучшению работы этих служб?