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

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

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

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

EDIT: В ответ на пару ответов ...

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

Код:

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 += @"
Exception Caught: " + ex.Message + @"
"; } endTimes[i] = DateTime.Now; }

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

EDIT Again: работа с муравьями, в обоих случаях 99,4% времени отправляется только по вызову веб-службы. Там нет никакой разницы ... кроме того, что при истечении времени веб-страница занимает больше времени, чем приложение Windows.

1
Не уверен, что вы имеете в виду...?
добавлено автор CodeRedick, источник
Тестирование между двумя различными бэкэндами веб-службы: генерируется Reference.CS в одном случае и WebClient в другом. Ссылка создается в .DLL, используемом как приложением Windows, так и веб-страницей.
добавлено автор CodeRedick, источник
какие Windows и веб-клиенты вы используете для веб-сервисов?
добавлено автор Mark Cidade, источник
Вы используете HttpWebRequest, сгенерированный Reference.cs, клиентский клиент на стороне клиента JavaScript или что?
добавлено автор Mark Cidade, источник

3 ответы

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

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

2
добавлено
Я бы посмотрел на Ants Profiler в этом случае, посмотрим на время выполнения цикла. Кроме того, исключаются ли исключения в одном случае, кроме другого? Исключения являются дорогостоящими.
добавлено автор Mitchel Sellers, источник
Хорошо, посмотрите, могут ли муравьи между двумя приложениями изолировать одну конкретную строку, которая требует больше усилий.
добавлено автор Mitchel Sellers, источник
Я только что добавил отредактированный в некоторой дополнительной информации. У меня нет доступа к внутренним возможностям веб-службы, но не знаю, почему это имеет значение в любом случае ...
добавлено автор CodeRedick, источник
Кроме того, поскольку я тестирую на своем рабочем столе, веб-сервис находится в одном и том же месте для обоих клиентов ...
добавлено автор CodeRedick, источник
Игра с муравьями теперь, но никаких исключений не бросают.
добавлено автор CodeRedick, источник
Это вызов веб-службы, как я подозревал. 99% времени - это только один звонок ...
добавлено автор CodeRedick, источник

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

1
добавлено

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

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

1
добавлено
Это была проблема с конфигурацией, одна из которых отправлялась в производственную систему, хотя оба использовали правильный веб-сервис. Разница во времени была из-за того, насколько объемнее база данных prod. Честно говоря, не уверен, почему это сработало ... Спасибо, хотя!
добавлено автор CodeRedick, источник
DotNetRuChat
DotNetRuChat
2 992 участник(ов)

Чат русскоязычного .NET сообщества http://dotnet.ru/ Вам могут быть интересны: @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @xamarin_russia, @microsoftstackjobs, @uwp_ru Флуд в @dotnettalks

Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

pro.net
pro.net
710 участник(ов)

Обсуждение .NET Framework и всего, что с ним связано. Правила: не флудить не по теме, уважать ваших коллег и никакой рекламы (объявления о вакансиях можно согласовать с @AlexFails). Флудилка: @dotnettalks Участник @proDOT

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

.NET Talks: Force Push Masters
.NET Talks: Force Push Masters
490 участник(ов)

Свободный чат .NET разработчиков. Правила: t.me/dotnettalks/56823 Вам могут быть интересны: @dotnetruchat, @dotnetchat, @cilchat, @fsharp_chat, @pro_net, @dotnetgroup, @xamarin_russia, @microsoftstackjobs, @uwp_ru http://combot.org/chat/-1001128250813

.NET Chat Убежище
.NET Chat Убежище
246 участник(ов)

Чат .NET разработчиков под эгидой MSK/SPB .NET Community Group Вам могут быть интересны: @fsharp_chat, @dotnetruchat, @cilchat, @xamarin_russia, @microsoftstackjobs, @dotnetgroup Флуд в @dotnettalks

.NET CIL Chat
.NET CIL Chat
54 участник(ов)

.NET CIL (aka IL aka MSIL)