Передача файлов через веб-сервис ASP.NET-это супер-пленка
-
15-10-2019 - |
Вопрос
У нас есть Legacy WSE3 ASP.NET Webservice, который определяет метод GetFileContent(string fileName)
. Анкет То, что он делает, проверяет предопределенный путь для файла с передаваемым именем, прочитайте его содержимое, Base64-поделите его и отправьте этот кодированный материал обратно в качестве ответа.
К сожалению, весь процесс занимает (разные) возрасты. Я написал приложение Console Client, которое сравнивает производительность по требованию: иногда 2,5 метра передаются в течение 12 секунд, иногда это занимает 40. Еще один 27-метровый файл проходил через 16 секунд, сегодня потребовалось> 1 мин.
Дальнейшие вещи, которые я проверил:
Производительность процессора и обмена не стоит упоминать (при мониторинге машина выглядит скучной)
Скорость сети достаточна.
Вызов метода выполняется сразу после того, как клиент отправил запрос.
Чтение и кодирование занимает в среднем 500 мс для большого файла, так что оператор возврата также выполняется сразу после запроса.
Другой клиент (на основе Java) еще медленнее, так что я думаю мог быть проблемой клиента.
У кого -нибудь есть идея, где смотреть рядом, чтобы отстать от этого противника? Чувствует, что IIS Проблема, действительно ...
Заранее большое спасибо...
Решение
Во -первых, просто чтобы убедиться: я надеюсь, что вы знаете, что WSE устарел.
Во -вторых, WSE основан на технологии ASMX. У этого есть проблемы с большими запросами, так как он будет дублировать входящие данные четыре или более раз на пути к службе. Как бы ваши данные были большими, предположим, что это займет не менее четырех раз больше памяти, прежде чем служба даже получит в свои руки.
Обходной путь - это обновление до WCF.
Другие советы
Я считаю, что в IIS нет проблем. Я подозреваю, что иногда потребовалось больше времени для разрешения IP, если вместо этого дается общий путь пути.