Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.75.227] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток!
Написал простую WCF службу с одним методом который только возвращает строку. Разместил свою службу в IIS. Все работает. Но, первый вызов метода занимает много времени (2 секунды), последующие вызовы проходят за сотые доли секунды. Подскажите, откуда берется эта задержка при первом вызове и можно ли ее "удалить"? Заранее спасибо) |
Сообщ.
#2
,
|
|
|
Это JIT компиляция из MSIL в машинный язык - она характерна для всех .NET приложений, а не только WCF сервисов. JIT компилирует методы перед их первым вызовом, это означает, что если у тебя будет два независимых метода в сервисе, то после вызова первого второй еще будет не скомпилирован. После компиляции машинный код сохраняется в кэше и последующие вызовы выполняются быстро.
Обойти (не избавиться) это можно при помощи "предварительного разогрева", как в ASP.NET 4, но не думаю что есть большая необходимость. |
Сообщ.
#3
,
|
|
|
spicard: спасибо за ответ! единственное, что хочеться уточнить это "предварительный разогрев". что имелось в виду? использование утилиты NGEN?
|
Сообщ.
#4
,
|
|
|
Смотри сюда: Автозапуск ASP.NET 4.0 приложений
Идея понятна, создано оно не столько для прекомпиляции, сколько для заполнения кэшей. |
Сообщ.
#5
,
|
|
|
Спасибо еще раз!
|
Сообщ.
#6
,
|
|
|
Если сервис не открывается явно, то при первом вызове метода идет настройка канала связи
|