Dez
14

Help!
Original uploaded to flickr by LiminalMike

Da ich mich momenten mit der Performance-Optimierung einer ASP.NET – Anwendung beschäftige bin ich – natürlich – wie vermutlich schon x andere ASP.NET – Entwickler vor mir über den ViewState gestolpert. Dieser nahm nämlich schon beim ersten Laden quasi in der "Startseite" der Anwendung die stattliche Größe von etwa 64kB ein und wuchs nach einigem Hin- und Hernavigieren auf über 200kB an. Deutlich zu viel. Die Seite enthält im Grunde nur eine statische Tabelle und ein paar Listboxen. Je nach Listbox-Auswahl wird der Inhalt der Tabelle dann geändert (dynamisch per AJAX über ein Base64-codierte Properties der in der Seite enthaltenen ASP.NET – Controls zeigte sich nach dem decodieren des selbigen aus dem Quelltext der Seite im Browser (Base64-De-/Codierung gibt’s z.B. recht komfortabel online hier), warum er so unglaublich groß war: Der Inhalt der kompletten Tabelle sowie aller Listboxen auf der Seite ist im ViewState enthalten.

Das warf natürlich die Frage auf, ob das denn sein muss und wenn nicht wie dieses Verhalten zu verhindern ist. Zumal es nicht wirklich ausreicht, den ViewState bei den betroffenen Controls einfach aus zu schalten (EnableViewState = false;). Dann ist die Seite zwar schön klein, funktioniert aber auch nicht mehr richtig. Also machte ich mich auf die Suche nach hilfreicher Lektüre – und fand die Mutter aller Beiträge zum Thema:

Infinities Loop: TRULY Understanding ViewState

Jeder, der eine halbwegs professionelle ASP.NET – Anwendung entwickelt, sollte sich diesen Artikel durchlesen. Da er ziemlich lang ist und meiner Meinung nach alles erklärt, was es zum Thema ViewState zu sagen gibt, will ich ihn hier nicht wiedergeben. Zum Appetit hier aber schon mal ein paar Themen-Auszüge:

  • Folgen von Missverständnissen bezüglich des ViewStates (wie Performance-Probleme, Gefährdung sensibler Daten u.a.)
  • Was und wie tut der ViewState im Detail – und was nicht (Daten speichern, Änderungen überwachen, Serialisierung/Deserialisierung, automatische Wiederherstellung von Daten)
  • Häufige Programmierfehler beim Entwickeln und Nutzen von WebControls
  • Initialisierungsprobleme
  • Das Phänomen der ohne aktivierten ViewState nicht mehr richtig funktionierenden ListBoxen
  • Der Unterschied zwischen deklarativ und programmatisch festgelegten Properties
  • und vieles mehr.
  • Also: Lesen! :-)

Kein Kommentar

Die Kommentarfunktion ist deaktiviert.

vBulletin statistics