Daniel.Fisher@devcoach.biz
Massendaten auf dem
Client
ADO.NET, WCF & AJAX …und auf einmal
sind die Daten auf dem Client…
About me
Daniel Fisher CTO.
devcoach®
Mit-Gründer und Geschäftsführer von
devcoach®.
Mit-Gründer und Vorstand der
just community e.V.
Leiter der .NET-Nieder-Rhein
INETA User-Group.
Mitglied im Microsoft
Community Leader & Insider Program.
About us
Beratung & Projektunterstützung
• REST & SOA – Architektur
• BPM & FDD – Prozesse
• Sicherheit & Claims – Identity
• DAL & ORM – Daten
• RIA & AJAX – Web 2.0
Technologien
• ASP.NET, WCF, WF & CardSpace – .NET
Kunden
• Versicherungen, Großhandel, Software – u.A.
Microsoft
daniel.fisher@devcoach.biz
Agenda
• Meet Simon!
• Früher war alles besser?
• Was sich mit AJAX ändert?
Simon says…
Daniel.Fisher@devcoach.biz
Hatte ich mich schon
vorgestellt? Ich bin Simon
aus dem Marketing.
Simon says…
Daniel.Fisher@devcoach.biz
Wir haben ein ernstes
Problem. Unsere Kunden
beschweren sich, dass
unsere Anwendung
sooooo langsam ist…
Klassischer Datenzugriff
Daniel.Fisher@devcoach.biz
Klassischer Datenzugriff
• GetAll
– 1 Request, 1 Response
– 1 Datenzugriff
– Das kann dann auch mal etwas länger
dauern…
Daniel.Fisher@devcoach.biz
Klassischer Datenzugriff #2
Daniel.Fisher@devcoach.biz
Klassischer Datenzugriff #2
• Paging
– 1 initialer Request/Response
– 1 Datenzugriff
– Je Seitenwechsel 1 Request/Response
– ViewState
• PRO: Nur wenn Datenquelle sehr sehr sehr
langsam und keine Snapshots oder Replikation
möglich ist!
• CON: Ping-pong on the wire 
Daniel.Fisher@devcoach.biz
Zusammenfassung
• Paging hilft nicht beim ersten Request.
• Paging erhöht das transportierte Daten-
Volumen.
– Gefühlte Performance lässt nach …
Daniel.Fisher@devcoach.biz
Simon says…
Daniel.Fisher@devcoach.biz
Kennen Sie dieses Persil?
Ach nein AJAX hieß es…
Damit können wir doch
bestimmt schneller und
besser und up to date …
AJAX = MEHR
PERFORMANCE?
Daniel.Fisher@devcoach.biz
AJAX Datenzugriff
Daniel.Fisher@devcoach.biz
ASP.NET AJAX Light
• Das Update Panel
• == Klassischer Datenzugriff
• Etwas verringertes übertragenes Daten-
Volumen unter der Prämisse, das das
UpdatePanel nicht die gesamte Seite
einschließt!
• Keine Lösung 
Daniel.Fisher@devcoach.biz
AJAX FÜR ECHTE MÄNNER
(UND TAFFE FRAUEN)
Es geht auch anders…
Daniel.Fisher@devcoach.biz
AJAX Datenzugriff
• Markup und Daten werden getrennt übertragen
– 1 initialer Request/Response (Markup)
– Je Seitenwechsel 1 Request/Response (Daten)
– Je Seitenwechsel 1 Datenzugriff
– Optimierteres Daten-Volumen
– Vermehrte Datenzugriffe
– Vermehrte Requests
Daniel.Fisher@devcoach.biz
Mehr Requests + Mehr Datezugriffe !
= Mehr Performance
AJAX Milchmädchenrechnung
Daniel.Fisher@devcoach.biz
Probleme für den Entwickler
• JavaScript ist Parallel-Know-how
– Eine weitere Sprache…
• Untypisiert!
– Keine Kompilierung…
– Tool-Chain erst am Anfang…
– Keine Controls für Massendaten…
Daniel.Fisher@devcoach.biz
Developer Convenience
• Bewährte Konzepte anwenden um neue Aufgaben zu
vereinfachen.
– Technologie: ASP.NET AJAX
– Aufgabe: Datenbindung
• Wir leihen uns mal ein
paar Konzepte…
– Technologie: ASP.NET
– Aufgabe: Datenbindung
Daniel.Fisher@devcoach.biz
ASP.NET AJAX ClientSide DataBinding
Daniel.Fisher@devcoach.biz
Aber wie kann uns AJAX helfen?
Daniel.Fisher@devcoach.biz
AJAX Datenzugriff #2
Daniel.Fisher@devcoach.biz
AJAX Datenzugriff #2
• Poor mans cache:
– Output Cache
• Hardware
– http://www.f5.com/solutions/acceleration/web-
acceleration/
Daniel.Fisher@devcoach.biz
Introducing Marcus
Daniel.Fisher@devcoach.biz
Ich bin die Infrastruktur!
Wenn du hier was willst,
muss tu mit mir reden.
AJAX Datenzugriff #2
• Markup und Daten werden getrennt übertragen
und Serverseitig gecached
– 1 initialer Request/Response (Markup)
– Je Seitenwechsel 1 Request/Response (Daten)
– Je Seite eines Seitenwechsel einmalig 1 Datenzugriff
– Optimierteres Daten-Volumen
– Veringerter Datenzugriff
– Vermehrte Requests
Daniel.Fisher@devcoach.biz
Simon says…
Daniel.Fisher@devcoach.biz
Das sieht ja schon gut
aus! Ach… hatte ich schon
gesagt, dass die Daten
auch sortiert werden
müssen.
AJAX Datenzugriff #3
Daniel.Fisher@devcoach.biz
Massendaten auf dem Client mit AJAX und WCF
Daniel.Fisher@devcoach.biz
AJAX Datenzugriff #3
• Markup und Daten werden getrennt übertragen
und Serverseitig gecached
– 1 initialer Request/Response (Markup)
– Je Seitenwechsel 1 Request/Response (Daten)
– Je Seite eines Seitenwechsel einmalig 1 Datenzugriff
– Je Seite eines Seitenwechsel einmalig 1 Request
– Optimierteres Daten-Volumen
– Veringerter Datenzugriff
– Veringerte Requests
Daniel.Fisher@devcoach.biz
Thin-Client wird Fett…
• Von nichts kommt nichts…
– Das was auf dem Server „gespart“ wird muss
jemand anderes „bezahlen“:
• Der Client
Daniel.Fisher@devcoach.biz
Footprints im Internet Explorer
Datensätze (n) Speicherverbrauch (MB)
0 43
10 66
100 72
500 91
1000 114
2000 162
3000 259
Daniel.Fisher@devcoach.biz
Q & A
daniel.fisher@devcoach.biz
daniel fisher @devcoach®.biz

2008 - Basta!: Massendaten auf dem Client