Я пытаюсь связать источник данных с ретранслятором, например, с веб-службой (.asmx с другого сайта) при загрузке страницы. Webservice возвращает DataSet из вызова sql. Каков наилучший способ сделать это?лучший способ использовать веб-сервис в коде asp.net за
ответ
Позвоните в веб-сервис, возьмите результат и привяжите его к вашему ретранслятору.
Если вы можете, вы также можете попытаться кэшировать информацию какое-то время на вашей стороне, если возможно, чтобы помочь с общей производительностью.
Поскольку вы звоните на другой сайт, вам нужно бороться с двумя проблемами (особенно если этот веб-сервис находится на чужом веб-сайте или в общедоступном Интернете). Во-первых, может быть задержка для извлечения данных с другого веб-сайта. Во-вторых, на другом веб-сайте может быть тайм-аут.
Как минимум вы должны рассмотреть запрос asychronous page. В этом MSDN статье говорится:
Если синхронный запрос становится I/O связанного, например, если он обращается к удаленного веб-службы или запросов к удаленной базе данных и ждет вызова прийти back-then поток, назначенный , к запросу застрял, ничего не делая , пока вызов не вернется. Это препятствует масштабированию , поскольку пул потоков имеет конечное число потоков . Если все запросы обрабатываются потоки блокируются, ожидая завершения операций ввода-вывода , дополнительные запросов получить в очереди в ожидании темы будут бесплатными. В лучшем случае пропускная способность уменьшается, потому что запросы ждут дольше времени обработки. В худшем случае очередь заполняется, и ASP.NET завершает работу последующих запросов с 503 «Сервер « Недоступные »ошибки.
Но лучшим решением, вероятно, является использование AJAX. Загрузите страницу, затем выполните запрос ajax, чтобы заполнить повторитель. Таким образом, вы можете иметь приятную «вращающуюся» графику или что-то еще, что происходит в ожидании на веб-сервисе.