Amikor a ListView nem az igazi

Az ASP.NET-ben megjelent ListView vezérlő igazi főnyeremény, tud mindent, amit kell, kézbentartható vele a generált HTML kód, ráadásul van hozzá designer támogatás is a Visual Studioban. Csak éppen vízfejűbb, mint bármely más listás adatmegjelenítő vezérlő.

Történt ugyanis, hogy ma hozzá kellett nyúlnom az egyik webalkalmazásunk egyik ASPX oldalához és ha már ott jártam, kicseréltem egy Repeatert ListViewra. Éljen az új vezérlő, ez a jövő, csak jobb lesz nekünk. Hát nem lett. Igen, tudom, ami működik, azon nem szabad változtatni…

Mivel épp azon dolgoztam, hogy az oldal által generált HTML kód minél egyszerűbb és áttekinthetőbb legyen, ezért hamar feltűnt, hogy bizony megnőtt a ViewState. Nem is kicsit. Ráadásul tette mindezt úgy, hogy az egész oldalra ki van kapcsolva a ViewState: EnableViewState=”false”.

Ez kezdett érdekes lenni, hiszen a funkcionalitás nem változott, még a template sem, csak másik vezérlőbe van beágyazva. Letöltöttem Fritz Onion ViewState Decoderét és megnéztem, mi van benne. A ViewState-ben semmi érdekes, ámde a control state-be, ami szintén az __VIEWSTATE rejtett mezőben utazik, bizony került valami a ListView1-től. A control state pedig akkor is ott van, amikor a ViewState ki van kapcsolva. Ez tehát nem bug, hanem feature!

Ezen a felismerésen fellelkesülve elkezdtem méregetni, hogy a különböző vezérlők hogyan viselkednek. Egy táblából válogattam le 145 rekordot és jelenítettem meg különböző vezérlőkben, miközben mértem az oldal és a ViewState méretét. Íme az eredmény:

Page size
(bytes)
Page ViewState length
(character count)
EnableViewState = true false true false
ListView 185 969 85 785 100 276 92
Repeater 197 324 97 176 100 200 52
DataList 201 065 100 889 100 228 52
DataList RepeatLayout="Flow" 200 121 99 945 100 228 52
GridView 204 048 102 868 101 256 76

A táblázatból az látszik, hogy a ListView szemeteli a legnagyobb ViewState-et még akkor is, ha a ViewState egyébként ki van kapcsolva. Az oldalhoz tartozó 52 karakteres alap ViewState majdnem kétszer akkorára növekszik. Mindez persze csak akkor igaz, ha egyetlen ListView van az oldalon, ha több, akkor példányonként további 40 karakter a sallang.

Persze a másik oldalon ott a ListView óriási előnye: a kézbentartható HTML kimenet. Míg a többi vezérlő span és table tag-ekkel tudta csak beágyazni a template-et, a ListView-nak nincs szüksége ilyen körítésre, tehát csak az kerül a HTML kimenetbe, amit mi beleírunk a sablonokba.

Persze, ha a számokat megnézzük, néhány bájtról, esetleg néhány kilóbájtról beszélünk. Vajon számít ez mondjuk havi sávszélesség szintjén? Kliens vagy szerver oldali sebesség szintjén? A megrendelő gurujával való vitatkozásnál, aki szerint csak az a weboldal lehet jó, aminek minden egyes karakterét kézzel írta valaki Notepad-ben vi-ban?

Ti szoktatok erre figyelni?



Balássy György (MS RD, ASP.NET MVP, MCTS)

Balássy György (MS RD, ASP.NET MVP, MCTS) Villamosmérnök, a BME Automatizálási és Alkalmazott Informatikai Tanszékén webportálok fejlesztését oktatja. 2000 óta foglalkozik a Microsoft .NET platformjával, melynek meghonosításában jelentős szerepet vállalt előadóként, konzulensként és A .NET Framework és programozása című könyv társszerzőjeként. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport vezetője, szakterülete web alapú rendszerek fejlesztése és üzemeltetése. 2004-ben Magyarországon elsőként kapta meg a Most Valuable Professional címet, majd 2005 óta a Microsoft magyarországi regionális igazgatója. Publikációi a Technet Magazinban, az MSDN Kompetencia Központ honlapján és szakmai blogjában olvashatóak.

2008.12.19. 16:01:49 | Permalink | Hozzászólások: 0 | Tárgyszavak: , ,


  • ProductExpiredException

    Balássy György (MS RD, ASP.NET MVP, MCTS) Friss MOSS 2007 Enterprise telepítés, keresésnél mégis a következő hibaüzenetet kapom. Tovább »
  • XML adatkötés a gyakorlatban

    Balássy György (MS RD, ASP.NET MVP, MCTS) Korábban már írtam arról, hogy az MSDN Kompetencia Központ RSS feedjét a FeedBurner szolgáltatás segítségével mérjük. A FeedBurner biztosít egy webes felületet a statisztikai adatok lekérdezéséhez, de ezen kívül egy REST-es API-t is ad, ami lehetővé teszi, hogy közvetlenül saját alkalmazásunkban jelenítsük meg ezeket az adatokat. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások