HTTP er en statsløs protokoll. Dette innebærer at hver gang en ny forespørsel sendes fra klienten til serveren, går statusinformasjonen til den forrige forespørselen tapt. Det er flere måter å lagre og administrere tilstanden i ASP.Net. Sessionsobjekt er en av dem, de andre er Cache- og Application-objekter.
Caching forbedrer applikasjonens ytelse ved å minimere ressursforbruket i systemet ditt. Du kan lagre ofte brukte data eller websider for å forbedre applikasjonens ytelse og gjennomstrømning og skalerbarhet ved å redusere forbruket av serverens ressurser.
Du kan definere økt som en økt med tilkobling mellom serveren og klienten - øktobjektet inneholder data som tilsvarer en brukers økt. Session er en administrasjonsteknikk på serversiden som brukes til å lagre brukerspesifikk informasjon i minnet for senere henting.
Modus for lagring av øktdata
Øktobjektet opprettes og administreres på serversiden. Sessionslagringsmodus bestemmer hvor øktdataene dine skal lagres. Øktetilstand kan lagres i en av følgende moduser:
- I prosess: Lagret i samme ASP.Net-prosess
- Statsserver: Lagret i et annet system
- SQL Server: Lagret i SQLServer-databasen
- Tilpasset: dette lar deg lagre øktdata ved hjelp av en tilpasset lagringsleverandør
In-Proc-modus for lagring av øktdata er standardmodus, og den er også den raskeste av alle tilgjengelige lagringsmodi. I denne modusen lagres øktdataene i serverens minne - inne i ASP.Net-arbeidsprosessen. Du bør bruke denne modusen hvis datamengden som må lagres i økten er mindre, og hvis du ikke trenger at dataene skal vedvares. Det skal bemerkes at øktdata lagret i denne modusen er ustabile, dvs. så snart økten er avsluttet, går sesjonsdataene tapt. Så data i økten er tilgjengelig så lenge økten er i live.
I tilstandsserver-modus lagres sesjonsdataene i en egen prosess - dette kalles ASP.Net State Service. Med andre ord, sesjonsdata i denne modusen lagres utenfor ASP.Net-arbeidsprosessen eller applikasjonsbassenget i IIS. I motsetning til In-Proc-modus bevares øktdata i tilstandsservermodus, dvs. de går ikke tapt etter at webapplikasjonen din har startet på nytt.
Følgende kodebit illustrerer hvordan du kan konfigurere økttilstand i applikasjonen din til å bli lagret i denne modusen.
stateConnectionString = "tcpip = Server: 1234"
cookieless = "false"
timeout = "20" />
SQLServer-modus for lagring av øktdata brukes til å vedvare øktdata for applikasjonen din i SQLServer-databasen. I likhet med tilstandsservermodus for lagring av sesjonsdata, gjør SQLServer-modus deg også i stand til å vedvare øktdata for applikasjonen din på tvers av applikasjonen på nytt. Vær oppmerksom på at du bør sørge for at ASP.Net-sesjonsstatusdatabasen blir opprettet før du bruker denne modusen. Du kan opprette denne databasen ved hjelp av kommandolinjeprogrammet Aspnet_regsql.exe.
Følgende kodebit viser hvordan du kan konfigurere applikasjonen din til å lagre øktdata i en SQLServer-database.
sqlConnectionString = "datakilde = server; bruker-id = joydip; passord = sa1 @ 3"
cookieless = "false" timeout = "20" />
Støtte for øktkomprimering av økt
Microsofts ASP.Net 4 introduserte en ny funksjon: session state compression. Med ASP.Net 4 og fremover kan du utnytte denne innebygde funksjonen til å komprimere øktdata for lagring av økter utenom prosessen. For å dra nytte av denne funksjonen er alt du trenger å gjøre å sette komprimeringsaktivert attributt til "sant" i konfigurasjonsfilen til applikasjonen. Følgende kodebit illustrerer hvordan dette kan konfigureres.
<>
mode = "SQLServer"
stateConnectionString = "noen tilkoblingsstrenger ..."
compressionEnabled = "true" />
Sesjonstilstand lar deg lagre brukerspesifikke data i minnet og identifisere en bestemt forespørsel unikt. Sesjonsdata lagres som nøkkel- / verdipar i SessionStateItemCollection og kan nås ved hjelp av egenskapen HttpContext.Session.
Følgende kodeeksempler viser hvordan du kan lagre og hente øktdata.
HttpSessionState.Session ["UserName"] = "John"; // lagrer øktdata
streng str = HttpSessionState.Session ["Brukernavn"]. ToString ();
// Henter øktdata
HttpSessionState.Remove ("Nøkkel å fjerne");
// Fjerner et objekt fra økttilstanden