Почему вызов веб-службы медленнее с веб-страницы? - PullRequest
1 голос
/ 14 октября 2008

У нас есть библиотека DLL, используемая в качестве промежуточного уровня между интерфейсом нашего веб-сайта и нашей системой оформления билетов. Метод вставки в систему тикетов немного сложен для объяснения, но короткая версия заключается в том, что он медленный. Лучший сценарий, который я получил, - это время подачи 9 секунд.

Настоящая проблема заключается в том, что я могу получить это время только через приложение Windows, а не через веб-сайт ASP.NET. Я настроил для тестирования как тестовое приложение Windows, так и веб-страницу, и, хотя код копируется между ними, веб-страница последовательно отправляется в течение 17-20 секунд, а приложение для Windows - 8-11 секунд.

Что может быть причиной этого?

РЕДАКТИРОВАТЬ: В ответ на пару ответов ...

Звонок в веб-службу занимает большую часть времени, но я не могу контролировать этот веб-сервис, поскольку он предоставляется поставщиком системы продажи билетов. Мне нужно выяснить, почему веб-сервис отнимает много времени, когда он вызывается из приложения другого типа. Код в обоих случаях одинаков, и он запускает цикл, затем сообщает записанное время.

Код:

for (int i = 0; i < numIterations; i++)
        {
            startTimes[i] = DateTime.Now;

            try
            {
                cvNum = Clearview.Submit(req, DateTime.Now, DateTime.Now, false);
            }
            catch (Exception ex)
            {
                exceptionCount++;
                lblResult.Text += @"<br />Exception Caught: " + ex.Message + @"<br />";                    
            }

            endTimes[i] = DateTime.Now;
    }

В обоих случаях это один и тот же цикл, и я отмечаю время непосредственно до и после вызова библиотеки, которая выполняет дальнейшую обработку и затем вызывает веб-службу. Но эта обработка должна быть последовательной, не так ли? Я проследил во время отладки и не заметил какой-либо задержки при получении реального вызова веб-службы ...

РЕДАКТИРОВАТЬ Снова: работая с муравьями, в обоих случаях 99,4% времени отправляется только по вызову веб-службы. Там, похоже, нет никакой разницы ... за исключением того, что по тайм-ауту веб-страница занимает больше времени, чем приложение Windows.

Ответы [ 3 ]

2 голосов
/ 14 октября 2008

Потенциально может быть проблема с расположением веб-службы относительно веб-сервера. Кроме того, структура страницы и другая обработка в вашем веб-интерфейсе могут влиять на продолжительность обработки приложения.

Как уже упоминалось, регистрация элементов с обеих сторон - отличная идея, если это не дает вам того, что вам нужно, вы можете попробовать профилировщик производительности, такой как Ants Profiler от Red Gate, который может помочь идентифицировать линию, метод или класс. который использует большую часть времени.

1 голос
/ 14 октября 2008

Работаете ли вы на одном компьютере? Расположен ли средний слой, который вы вызываете, на удаленном компьютере? Упомянутые вами временные интервалы смутно ощущаются как проблема времени ожидания DNS, когда при открытии соединения налагается штраф за первый (неадекватный / неверный адрес) ответ DNS на время ожидания. Вы уверены, что любой конфигурационный файл / var, указывающий DLL на средний уровень, одинаков в обоих вызовах?

Я предлагаю использовать Wireshark, чтобы увидеть, что происходит. Вы можете, по крайней мере, убедиться, что время обработки бэкэнда (должно быть, в любом случае) одинаково ...

1 голос
/ 14 октября 2008

Перечень ваше приложение с обеих сторон с журналами - это покажет вам, куда идет время. Если это не поможет, используйте Wireshark для отслеживания сетевой активности.

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