лучший способ использовать веб-сервис в код asp.net - PullRequest
5 голосов
/ 31 октября 2008

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

Ответы [ 2 ]

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

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

Как минимум, вы должны рассмотреть запрос асинхронной страницы . Как говорится в этой статье MSDN:

Если синхронный запрос становится I / O связанный - например, если он призывает удаленный веб-сервис или запрашивает удаленная база данных и ждет звонка вернуться - тогда нить назначена на запрос застрял, ничего не делая пока звонок не вернется. Что мешает масштабируемость, потому что пул потоков имеет конечное число потоков имеется в наличии. Если все запросы обрабатываются потоки заблокированы в ожидании ввода / вывода операции для завершения, дополнительные запросы встают в очередь в ожидании темы должны быть бесплатными. В лучшем случае, пропускная способность уменьшается, потому что запросы ждать дольше, чтобы быть обработанным. В худшем случае, очередь заполняется и сбой ASP.NET последующие запросы с 503 "сервером Недоступные "ошибки.

Но лучшим решением, вероятно, является использование AJAX. Загрузите страницу, затем сделайте ajax-запрос, чтобы заполнить ретранслятор. Таким образом, вы можете получить красивую «вращающуюся» графику или что-то еще, пока вы ждете в веб-сервисе.

0 голосов
/ 31 октября 2008

Позвоните в веб-службу, возьмите результат и свяжите его с вашим ретранслятором.

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

...