2008-10-31 17 views

Antwort

0

Rufen Sie den Webservice an, nehmen Sie das Ergebnis und binden Sie es an Ihren Repeater.

Wenn Sie können, könnten Sie auch versuchen, die Informationen für eine Weile auf Ihrer Seite zwischenzuspeichern, wenn möglich, um mit der Gesamtleistung zu helfen.

1

Da Sie eine andere Website anrufen, müssen Sie mit zwei Problemen kämpfen (vor allem, wenn dieser Webdienst auf der Website einer anderen Person oder über das öffentliche Internet verfügbar ist). Erstens könnte es eine Verzögerung geben, um die Daten von der anderen Website abzurufen. Zweitens könnte die andere Website eine Zeitüberschreitung aufweisen.

Zumindest sollten Sie eine asychronous page Anfrage berücksichtigen. Wie dieser MSDN-Artikel heißt es:

Wenn eine synchrone Anforderung wird I/O abgebundenen zum Beispiel, wenn es einen Remote-Web-Service ruft oder fragt eine Remote-Datenbank und wartet auf den Anruf zu kommen zurück-dann der Thread zugewiesen an die Anfrage bleibt nichts tun bis der Anruf zurückkehrt. Das verhindert Skalierbarkeit, da der Thread-Pool eine endliche Anzahl von Threads zur Verfügung hat. Wenn alle Threads für die Anforderungsverarbeitung blockiert sind und auf die Ausführung der I/O-Operationen warten, werden weitere Anfragen in die Warteschlange gestellt und warten auf Threads, die frei sein müssen. Im besten Fall nimmt der Durchsatz ab, weil Anforderungen länger auf die Verarbeitung warten. Im schlimmsten Fall die Warteschlange füllt und ASP.NET schlägt fehl nachfolgende Anforderungen mit 503 "Server nicht verfügbar" Fehler.

Aber die beste Lösung ist wahrscheinlich, AJAX zu verwenden. Laden Sie die Seite und machen Sie eine Ajax-Anfrage, um den Repeater zu füllen. So können Sie die nette "Spinning" Grafik oder etwas anderes während des Wartens auf dem Webservice haben.

Verwandte Themen