07. april 2008 - 08:02Der er
4 kommentarer og 1 løsning
Bevare en datatable i mellem postback
Hej Eksperter
Jeg sidder og arbejder med en Datatable, hvor jeg redigerer i. Jeg gemmer datatabellen i Session for at bevare den i mellem Postbacks. Jeg syntes at applikationen er begyndt at blive lidt langsom og vil derfor høre om der er andre måder kan bevare en Datatable i mellem Postbacks?
Hvis man bruge Typed datasets – så skal man vel også gemme i mellem postback ikke?
For at starte bagfra så er der ikke forskel på untyped datasets og typed datasets når det kommer til state håndtering (typed datasets arver System.Data.DataSet).
Mht. til state håndtering imellem postbacks så har du groft sagt nedenstående 5 muligheder.
1 - Session state ASP.Net anvender den konfigurerede session state provider til at gemme data i. Som oftest er dette in process hvilket vil sige i ram, men i farm scenarier anvendes en eller anden form for n-tier løsning, typisk en database server da multiple maskiner naturligvis ikke kan dele ram. Session state er unik for den aktive session og kan derfor ofte give skaleringsproblemer.
2 - View state Data serialiseres til klienten sammen med html renderingen, typisk som base64 encoded i et hidden form field.
3 - Application state Ligesom med session state anvender ASP.net her den konfigurerede provider til at gemme data. Ulig session state er application state delt imellem alle sessioner for den pågældende application.
4 - Cache ASP.Net gemmer data in process, altså i maskinens ram. Dette kan anvendes til at løse state håndtering i scenarier hvor applikationen kun kører på en maskine men vil ikke virke i farm scenarier og kan generelt ikke anbefales til state håndtering.
5 - Persistering Det er naturligvis altid muligt at lave sin egen løsning fra bunden der f.eks. serialiserer data til harddisk, database eller lignende.
I langt de fleste scenarier, og også i dette, er det dog kun session state og view state som er egentlige muligheder. Begge løsninger har fordele og ulemper. Session state vil være hurtigt og nemt i udviklingsøjemed, men vil hurtigt påvirke performance negativt specielt i skaleringsscenarier. View state påvirker ikke performance på samme måde, men store datamængder vil medføre store mængder af data skal sendes imellem klient og server og vil derfor også medføre at brugere vil opleve applikationen som langsom. Helt generelt er det ofte en dårlig løsning at bevare datasets imellem postbacks da det ofte er mindre krævende simpelthen at indlæde data påny når serveren rammes. Hvis du ønsker at fortsætte med at persistere data imellem postbacks kommer dit valg meget an på hvilke krav der er til applikationen og hvilket miljø den skal operere i.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.