DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Hannes Preishuber Artikel Drucken
        
Performance Tipps für ASP.NET

von Hannes Preishuber

Mit ASP .NET müssen Anwendungen ein wenig anders gebaut werden als mit ASP. Dafür haben wir für Sie hier die wichtigsten Tipps zusammengefasst.

Nutze den Cache

Mit der Funktion Cache() können Variablen und Objekte in den Cache geladen werden. Auf den ersten Blick ist die Wirkung ähnlich wie bei Application Variablen. Der große Unterschied ist die eingebaute Logik des Caches. Es gibt z.B. einen speziellen Output Cache der das HTML Ergebnis des Reendering hält. Um den zu aktivieren wird in der Page die Direktive  <@% OutputCache %>  eingebaut. Wenn ein Benutzer diese Seite aufruft wird Sie automatisch in den Cache geladen, jeder weitere Benutzer erhält dann nur den Cache. Es gibt jede Mengen Regeln nach denen das passieren soll:
  • Zeitdauer wie lange das Objekt im Cache bleibt
  • Abhängig von Parameter aus der URL oder GET/POST
  • Abhängig vom HTTP Header
  • Abhängig vom Browser
  • Fragment Caching hält nur Teile der Seite im Cache
  • Abhängig von Werten aus einem Control

Beim speichern von Objekten z.B. Datasets können Sie natürlich auch die Lebenszeit festlegen. Darüber hinaus aber können noch abhängigkeiten von Files, Keys oder Zeiten definiert werden. Ein besonderes High Light ist die Call Back Funktion, die ausgeführt wird, wenn der Cache abläuft. So kann z.B. das Ergebnis einer Datenbank Abfrage automatisch stündlich im Cache aktualisiert werden.

Der Performance Gewinn hängt hier sehr stark von der Software Architektur ab. Muss der Artikelkatalog in einem Online Shop wirklich jedes Mal abgefragt werden oder reichen ein Stunden alte Daten?

Session Verwaltung abschalten

Die Session Verwaltung von ASP .NET ist sehr viel besser als die von ASP. Trotzdem gibt es Seiten in denen keine Session

Variablen verwendet werden. Man kann den Overhead vermeiden indem man dann den Session State über die Direktive <@% EnabledSessionState = false %> abschaltet. Sie können sogar festlegen, das Session variablen in einer Seite nur gelesen werden über die Direktive EnabledSessionState=readonly.

Viewstate abschalten

Viewstate ist eine enormer Komfort für den Entwickler und eventuell auch für den User. Trotzdem muss nicht für jedes Control der Viewstat eingeschaltet sein. Sie konnen aber auch den Viewstate für eine ganze Seite deaktivieren über die Direktive <@% EnabledViewState = false %>. Dadurch wird weiniger Traffic auf der Leitung verursacht und natürlich auch der allgemeine Overhead verringert.

Vermeidung von alten COM Objekten

Mit Visual Basic erzeugte Com Objekte werden immer im STA Modus ausgeführt. Um solche Objekte in ASP .NET einbinden zu können muss die Direktive <@%AspCompat = "true" %> gesetzt werden. Dies vermindert die Performance aber durchaus nennenswert. ASP .NET bevorzugt das MTA Modell welches Free Threaded ist. Wenn Sie nun weiter ADO in ASP verwenden, können Sie ADO dazu bewegen den Modus von STA nach MTA zu wechseln. Dazu verwenden Sie das Batchfile makefre15.bat das sich in Ihrem Verzeichnis Programmecommon filesystemado befindet. Noch besser ist natürlich keine COM Objekte mehr zu verwenden.

ASPX Compilieren

ASPX Seiten werden beim ersten Aufruf kompiliert. Dies erfordert sehr viel Ressourcen. Rufen sie bei einem Produktivsystem alle Seiten mindestens einmal manuell auf, damit der Kompiler nicht das System später belastet.

Entfernen HTTP Module

Mit HTTP Modulen können Erweiterungen des IIS sehr leicht realisiert werden. Entfernen Sie aber nicht benötigte, da diese unnötig den Pipeline Prozess belasten.

Vermeiden Sie Autoeventwireup

Sie können auch die Events einer Seite z.B. OnLoad  überladen. Das erspart zur Laufzeit das generieren von CreateDelegeate für jede Seite.

Verwenden Sie ASCII Encoding

Per Default verwendet ASP .NET UTF-8 um Requests und Response zu kodieren. Auch das kostet Zeit. Verwenden Sie das gute alte ASCII. Dies allerdings nur wenn Sie keine abweichenden Zeichen benötigen. Dies kann in der Web.Config für die ganze Anwendung erfolgen.

Sicherheit

Verwenden Sie Sicherheit nur dort wo sie auch benötigt wird. Eine Passwort Anmeldung verschlingt die Zeit des Users und des Servers. Verwenden Sie auch die optimale Anmeldung. Im Intranet ist eine Windows basierte oder keine Anmeldung die beste.

Überwachung

Glauben Sie niemanden ein Wort zu Performance Aussagen. Testen Sie immer selber, ob wirklich weniger Ressourcen verbraucht werden. Es gibt als Tool das WAS (Webapplication Stress Test Tool) zur Simulierung von Last. Einfache Aussagen könne auch über die Aktivierung des Tracings getroffen werden. Außerdem werden eine Menge Counter in den System Monitor installiert, die Sie verwenden können.

Für die einzelnen Sprachen ergeben Sich wieder andere Optimierungen, die natürlich auch bei ASP .NET Anwendung finden. Außerdem können Sie beim Thema Datenabfrage mit ADO .NET ebenfalls jede Menge Geschwindigkeit rausholen. Weitere Tipps für gutes programmieren auf www.devtrain.de.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 29.01.2002
  Gültig bis: 28.02.2002
11 Ratings
Bewertung: 74,5%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG