Каждый второй вызов в Async WCF идет медленно - PullRequest
8 голосов
/ 15 февраля 2011

Я использую примеры кода из этой статьи Рика Стрэла: 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)

1 Ответ

3 голосов
/ 24 февраля 2011

Я бы не зависел от времени от сервера.Что произойдет, если вы развернете свой сервис в IIS (или даже в IIS Express)?DevServer VS2010 не так надежен для сервера по времени и не будет хорошим индикатором производительности.

Вот хорошая статья (хотя и немного устаревшая), в которой обсуждаются различияIIS и веб-сервер Visual Studio (он же Кассини).

Рад, что это помогает!

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