Почему вызов веб-службы с веб-страницы происходит медленнее?

У нас есть 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.

какие Windows и веб-клиенты вы используете для веб-служб?

Mark Cidade 14.10.2008 20:50

Вы используете HttpWebRequest, сгенерированный Reference.cs, клиентский веб-клиент JavaScript или что-то еще?

Mark Cidade 14.10.2008 21:39

Тестирование между двумя разными бэкэндами веб-сервисов: сгенерированным Reference.CS в одном случае и WebClient в другом. Ссылка создается в .DLL, используемом как приложением Windows, так и веб-страницей.

CodeRedick 14.10.2008 21:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
375
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

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

Я только что добавил отредактированную дополнительную информацию. У меня нет доступа к внутренним компонентам веб-службы, но я не уверен, почему это все равно имеет значение ...

CodeRedick 14.10.2008 21:42

Кроме того, поскольку я тестирую на своем рабочем столе, веб-сервис находится в одном месте для обоих клиентов ...

CodeRedick 14.10.2008 21:46

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

Mitchel Sellers 14.10.2008 22:00

Играем с Муравьями, но никаких исключений не выбрасывают.

CodeRedick 14.10.2008 22:28

Хорошо, посмотрим, смогут ли муравьи между двумя приложениями выделить одну конкретную строку, для которой требуется больше усилий.

Mitchel Sellers 14.10.2008 23:01

Как я и подозревал, это вызов веб-службы. 99% времени уходит только на один звонок ...

CodeRedick 14.10.2008 23:44
Ответ принят как подходящий

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

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

Это была проблема конфигурации, одна отправлялась в производственную систему, хотя обе использовали правильную веб-службу. Разница во времени была из-за того, насколько загружена база данных prod. Честно говоря, не знаю, почему это вообще сработало ... Спасибо!

CodeRedick 15.10.2008 00:19

Другие вопросы по теме