2011-01-04 2 views
1

У нас есть веб-сервис WSE3 ASP.Net, который определяет метод GetFileContent(string fileName). То, что он делает, это проверить предопределенный путь для файла с переданным именем, прочитать его содержимое, закодировать base64 и отправить этот закодированный материал обратно в качестве ответа.Перенос файлов через ASP.Net webservice очень медленный

К сожалению, весь процесс занимает (меняется) возраст. Я написал консольное клиентское приложение, которое оценивает производительность по требованию: Иногда 2.5Megs переносятся в течение 12 секунд, иногда это занимает 40. Еще один 27-мегабайтный файл пробил через 16 секунд вчера, сегодня потребовалось> 1 мин.

Другие вещи, которые я проверил:

  • процессора и производительность подкачки не стоит упомянуть (о мониторинге, машина выглядит скучно)

  • скорость сети достаточна.

  • Вызов метода выполняется сразу после того, как клиент отправил запрос.

  • Чтение и кодирование занимает в среднем 500 мс для большого файла, так что оператор return также выполняется сразу после запроса.

  • Другой клиент (на основе Java) еще медленнее, поэтому я думаю, что это может быть проблемой.

Есть ли у кого-нибудь идеи, где искать рядом с этим неприятным? Ощущается как проблемы IIS, на самом деле ...

спасибо заранее ...

+0

Можете ли вы рассказать о настройке .. Использование веб-службы для файлов tranferring будет всегда медленным. Может быть, вы можете размещать файлы в ftp, а затем клиенты могут скачать его там. – Mahesh

+0

Можете ли вы обновить свой вопрос с примером кода, который вы используете System.IO? – RameshVel

+0

Привет Махеш, к сожалению, вся установка очень сложная и не может быть изменена. Сервер - это IIS6, работающий на сервере Win2003 (64 бит), тестовый клиент запускает WinXP SP3 и находится в одной сети (не через Интернет). –

ответ

0

Прежде всего, чтобы убедиться: я надеюсь, что вы знаете, что ВФБ устарела.

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

Обходным путем является переход на WCF.

0

Я считаю, что нет никаких проблем в IIS. Я подозреваю, что иногда для разрешения IP требуется больше времени, если вместо этого указывается общий путь пути.

+0

Тогда как это могло быть? метод webservice выполняется мгновенно после вызова с клиента. в этот момент ip-разрешение уже произошло ... –