Я использую примеры кода из этой статьи Рика Стрэла: http://www.west -wind.com / weblog / posts / 324917.aspx для выполнения асинхронных вызовов к службе WCF, которая прекрасно работает .
Моя проблема заключается в следующем:
Первый вызов службы WCF занимает около 20 мс, а следующий - около 1 с 20 мс (выполняется точно так же и получает те же данные). Если я повторю процесс, результат будет одинаковым все время. Каждый второй вызов занимает одну секунду дольше, чем первый.
Я попытался установить InstanceContextMode в моем сервисе:
[ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.PerSession)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public abstract class AjaxPostBack : IAjaxPostBack
Я также установил таймеры в методах, вызываемых в службе, и результат каждый раз один и тот же (конечно, некоторые мс различия, но ничего существенного)
"JSON_Took":"00:00:00.0012939","Set_took":"00:00:00.0000274"
(Эти значения - JSON_Took & Set_took - являются таймерами в коде методов. Поэтому не общее время от клиента-сервера-клиента. Это просто для иллюстрации того, что это не проблема с тем, что реальный код отнимает много времени)
Есть идеи?
Дайте мне знать, если вам нужна дополнительная информация.
---- Интересное обновление ----
Я скачал IE9 RC, а также Firefox (я тестировал в Chrome)
Мои результаты из разных браузеров:
Firefox : Все вызовы согласованы в течение приблизительно от 1 с 20 мс до 1 с 30 мс
Chrome : каждый второй звонок срабатывает со скоростью Firefox, а остальные на 1 секунду быстрее
IE9 : все вызовы согласованы практически без времени (~ 20 мс)
Opera : Почти так же, как IE9 (~ 30 мс)
Это проблема webkit? (Я использую $ .ajax для вызова WCF)