Manchmal sind unsere Webanwendungen beim lokalen Testen sehr schnell, aber beim Testen im LAN treten manchmal auch Anwendungen mit normaler Geschwindigkeit im LAN auf. Diese Probleme sind im Allgemeinen auf Nachlässigkeit oder Fehler in der Anwendung zurückzuführen und betreffen nicht die Systemarchitektur. Das Problem kann durch Debuggen und Testen in der realen Umgebung gefunden und gelöst werden.
Worüber wir heute sprechen, ist die grundlegende Verbesserung der Leistung von ASP.Net-Anwendungen durch eine Verbesserung der Architektur.
Testen wir zunächst einige einfache Anwendungen von ASP.Net.
Testumgebung: AthlonXP 3200+, DDR400 512M, WindowsXP SP2, nativer SQL Server 2000, Produkttabelle der chinesischen Northwind-Datenbank (importiert aus Access), ca. 70 Datensätze.
Testseriennummer | Programmtyp | Testmethode | Testergebnis (Anfragen pro Sekunde) | SQLServer Ressourcen belegt | ASP.Net Belegte Ressourcen |
1 | Der Webdienst | füllt das DataSet mit der Produkttabelle und gibt die Anzahl der Datensätze | 250 Mal | zurück100 % | - |
2 | Der Webdienst | füllt das DataSet mit der Produkttabelle und gibt das DataSet | 138 Mal | zurück54 % | 46 % |
3 | Die Webanwendung | füllt das DataSet mit der Produkttabelle und gibt | 70-mal | Bind DataGrid zurück28 % | 72 % |
Im ersten Test liest der Webdienst nur Datensätze aus der Datenbank, füllt sie in das DataSet und gibt die Anzahl der Datensätze zurück (beachten Sie, dass er nur sehr wenige Systemressourcen belegt). Die Ressourcen sind vollständig von SQL Server belegt, und die Schlussfolgerung ist nicht klar. Es wird negative Auswirkungen geben.
Wenn der Webdienst im zweiten Test ein DataSet zurückgibt, wird die Anzahl der Anfragen pro Sekunde um fast die Hälfte reduziert. Die Hälfte der Systemressourcen wird von ASP.Net für die Serialisierung des DataSet verwendet.
Im dritten Test, bei dem die Webanwendung das DataSet an das DataGrid bindet und die Seite zurückgibt, wird die Anzahl der Anfragen pro Sekunde um fast drei Viertel reduziert. Diese Systemressourcen werden von ASP.Net verwendet, um das DataSet an das DataGrid zu binden und geben Sie die Seite zurück.
Aus den obigen Tests können wir ersehen, dass die Bindung und Serialisierung von DataGrid viele Systemressourcen beanspruchen wird. Wenn Sie die Systemleistung verbessern möchten, müssen Sie die Architektur verbessern.
1. Trennen Sie die Vorgänge in der Datenbank von der Seite und platzieren Sie sie in einer unabhängigen Persistenzschicht.
Auf diese Weise werden die Daten auf der Clientseite als Tabelle über DOM oder XSLT angezeigt, wodurch die Bindungsarbeit des DataGrid auf der Serverseite ersetzt wird, was den Druck auf den Server erheblich verringert. Und der Client erhält Daten von der Persistenzschicht über AJAX, was die Benutzererfahrung verbessert.
2. Trennen Sie die Seite vollständig von den Daten, damit der Cache verwendet werden kann.
Einige Seiten, die AJAX verwenden, lesen weiterhin die ursprünglichen Daten, sodass die Seite nicht zwischengespeichert werden kann. Diese Seiten sind im Allgemeinen komplexer und beanspruchen mehr Ressourcen als normale Seiten. Wenn der Cache verwendet werden kann, wird die Leistung des Systems weiter verbessert.
Durch die beiden oben genannten Punkte kann die Leistung von ASP.Net nahezu verdoppelt werden.
Sie können es selbst testen oder unser Beispiel www.BizStruct.cn besuchen.