2009-06-24 12 views
4

Ich entwickle eine asp.net Webservice-Anwendung, um json-formatierte Daten an ein Widget zu liefern, das jQuery.ajax verwendet, um die Anfrage zu stellen. Ich habe die FireBug Net-Ansicht verwendet, um zu überprüfen, wie lange die Anforderungen für Daten dauern.Welchen Antwortzeitaufwand würden Sie für eine Webservice-Anfrage im Vergleich zu einer einfachen Dateianforderung erwarten?

In meinem ersten Prototyp habe ich einfach statische JSON-Dateien angefordert, die auf meiner Entwicklungsmaschine offensichtlich sehr schnell von IIS zurückgegeben wurden - in etwa 2 bis 5 ms, auch wenn sie nicht im Cache des Browsers vorhanden sind.

Jetzt habe ich mit dem Webservice verbunden Ich bin besorgt, dass die Datenanforderungen viel zu langsam sind, da sie konsistent um 200ms dauern, um zurückzukehren. (Dies ist sogar nach der ersten Anfrage, die offensichtlich Sachen kompiliert und etwa 6 ganze Sekunden benötigt.) Ich habe den gesamten Datenbank-/Verarbeitungs-Overhead von der Web-Anfrage entfernt, so dass es sehr wenig Zeit zur Verarbeitung benötigt und dies auch noch läuft die lokale Dev-Maschine, also keine Netzwerklatenz. Der Overhead ist mit einem Release-Build und einem Produktionsserver nicht besser. diese

ist Meine Frage:

Ist diese Reaktionszeit von ca. 200 ms der besten, die ich von einer .net Web-Service erwarten können, die einfach zurückkehrt ‚Hallo Welt‘? Wenn es möglich ist, viel besser zu machen, was könnte ich dann falsch machen? Wenn es nicht möglich ist, was würden Sie stattdessen tun?

Antwort

3

Wenn es wirklich nichts in Bezug auf die Verbindung zu einer Datenbank usw. tut, dann sollten Sie in der Lage sein, eine viel bessere Reaktionszeit von 200ms zu bekommen.

Wenn Sie die Zeit auf der Server Seite statt der Client-Seite messen, was sehen Sie? Haben Sie versucht, mit WireShark zu sehen, was im Netzwerk passiert?

Grundsätzlich wollen Sie in der Lage sein, eine Zeitachse so genau wie möglich zu erstellen, wann der Client die Anfrage gesendet hat, wann die Anfrage den Server getroffen hat, wann Ihr serverseitiger Code die Anfrage erhalten hat, wann Ihr serverseitiger Code Die Verarbeitung der Anfrage wurde beendet, als der Server die Antwort tatsächlich gesendet hat und wenn der Client die Antwort tatsächlich erhalten hat.

An diesem Punkt können Sie herausfinden, wo der Engpass ist.

+0

Danke für den Hinweis auf WireShark, ich habe das vorher nicht benutzt. Dies zeigt die Zeit zwischen der Anforderung, die den Server trifft, und der Antwort, die es erlaubt, dass der Port ungefähr 170 ms dauert, so dass dies definitiv der größte Teil davon ist. Mein Web-Server-Code verarbeitet überhaupt keine Daten und gibt nur einen String-Parameter direkt an den Client zurück. –

+2

Hmm. Das ist nicht gut. Sie können möglicherweise etwas mehr Protokollierung in den Prozess, so dass Sie etwas sehen können, wo der Rest der Zeit läuft. Was passiert, wenn Sie einen ASP.NET-Dienst ohne Webdienst ausführen (z. B. direkt an einen benutzerdefinierten Handler)? –

+0

Ich habe gerade einen benutzerdefinierten Handler-Aufruf versucht - und es ist nur die gleiche Langsamkeit. Oh gut ... Meine alternative Lösung ist es, die Webservice-Aufrufe, die Daten schreiben tatsächlich JSON-Dateien auf die Festplatte schreiben, um später serviert zu werden. (Die Website wird viel mehr Lesevorgänge als Schreibvorgänge haben.) Sie haben den Hauptteil meiner Frage beantwortet - es _should_ sollte schneller als das sein. –

Verwandte Themen