WCF требует времени для продолжения звонков после того, как он не звонил в течение определенного периода времени - PullRequest
0 голосов
/ 25 мая 2011

Я разработал API-интерфейс REST WCF, в котором NHibernate используется в качестве слоя персистентности. В настоящее время я пользуюсь службой Per-Session, но прочитал, что службы Per-Call - это то, что я делаю.

Есть 2 вещи (вероятно, очень связанные), которые мне не нравятся, и я хочу удалить об этом.

  1. При первом вызове API для ответа требуется около 20 секунд, что может означать, что он загружает библиотеки и создает классы. Могу ли я сделать это до того, как произойдет звонок? У меня уже есть статический конструктор в классе реализации ServiceContract, но это не уменьшает время его загрузки.

  2. При последующих вызовах, если я перестану звонить в службу примерно на 10 минут, время вызова снова изменится с 1 до более 20 секунд. Это моя самая большая проблема, поскольку клиенты должны иметь тайм-аут 30 секунд, что для пользователей может показаться, что приложение аварийно завершилось.

Как я могу улучшить это? Есть ли у вас какие-либо советы по улучшению работы этих служб?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Кажется, что это явный случай повторного использования пула приложений IIS, поэтому разумно предположить, что вы размещаете эту службу WCF в IIS.

Несколько вариантов:

  1. Размещать службу вне IIS (WCF может быть размещен как отдельная служба Windows)
  2. Настройка частоты повторного использования пула приложений
0 голосов
/ 25 мая 2011

Попробуйте зарегистрировать ваши Application_Start () и Application_End (), чтобы показать время запуска и остановки вашего приложения.Это может дать вам представление, если это ваша проблема.

Также это может быть тип Session_Start / End тоже.

Если вы думаете, что ваш сайт станет более занятым, то ваше приложение остановитсяи запуск все время не будет такой проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...