Upravljanje ASP.NET sesijama [Primjer]
⚡ Pametni sažetak
Upravljanje ASP.NET sesijama omogućuje HTTP aplikaciji bez stanja pamćenje korisničkih podataka kroz zahtjeve. Objašnjava ViewState, objekt Session za pohranjivanje parova ključ-vrijednost, radni primjer, načine stanja sesije, konfiguraciju vremenskog ograničenja i prednosti stanja sesije.
ASP.NET upravljanje sesijama
HTTP protokol na kojem rade sve web aplikacije je protokol bez stanja. Bez državljanstva, to samo znači da se podaci ne zadržavaju od jednog zahtjeva do drugog.
Na primjer, ako imate stranicu za prijavu koja ima 2 tekstualna okvira, jedan za ime, a drugi za lozinku. Kada kliknete gumb Prijava na toj stranici, aplikacija mora osigurati da korisničko ime i lozinka budu proslijeđeni na sljedeću stranicu.
U ASP.Net-u se to radi na razne načine. Prvi način je putem koncepta koji se zove ViewState. Ovdje ASP.Net automatski pohranjuje sadržaj svih kontrola. Također osigurava da se to prenese na sljedeću stranicu. To se radi putem svojstva koje se zove ViewState.
Nije idealno da programer mijenja bilo što u stanju prikaza. To je zato što njime treba upravljati samo ASP.Net.
Objekt ASP.NET sesije
Drugi način je korištenje objekta koji se zove "Objekt sesije". Objekt Sesije dostupan je tijekom cijelog životnog ciklusa aplikacije. U objekt sesije možete pohraniti bilo koji broj parova ključ-vrijednost. Dakle, na bilo kojoj stranici možete pohraniti vrijednost u objekt sesije putem donjeg retka koda.
Session["Key"] = value
Ovo pohranjuje vrijednost u objekt Session, a dio 'ključ' se koristi za davanje imena vrijednosti. To omogućuje dohvaćanje vrijednosti u kasnijem trenutku. Za dohvaćanje vrijednosti možete jednostavno izdati sljedeću naredbu.
Session["Key"]
Primjer ASP.NET objekta sesije
U našem primjeru, koristit ćemo objekt Session za pohranu imena unesenog u polje za naziv na stranici. Zatim ćemo dohvatiti tu vrijednost i prikazati je na stranici u skladu s tim. Dodajmo donji kod u datoteku Demo.aspx.cs.
protected void btnSubmit_Click(object sender, EventArgs e) { Session["Name"] = txtName.Text; Response.Write(Session["Name"]); lblName.Visible = false; txtName.Visible = false; lstLocation.Visible = false; chkC.Visible = false; chkASP.Visible = false; rdMale.Visible = false; rdFemale.Visible = false; btnSubmit.Visible = false; }
Code Obrazloženje:-
- Prvi redak koda uzima vrijednost kontrole tekstualnog okvira Name i pohranjuje je u objekt Session. Određivanjem koda Session[“Name”], dajemo svojstvu naziv pod nazivom “Name”. Određivanjem naziva za svojstvo, lakše ga je dohvatiti kasnije.
- Sljedeći redak koda dohvaća pohranjenu vrijednost iz Session objekta. Zatim zapisuje ovu vrijednost putem metode 'Response.Write' natrag klijentu.
- Konačno, sve kontrole na obrascu činimo nevidljivima. Ako to ne učinimo, sve kontrole i vrijednosti naših odgovora bit će prikazane zajedno.
Nakon što napravite gore navedene promjene, vidjet ćete sljedeći izlaz.
Izlaz:
Iz izlaza možete vidjeti da je vrijednost sesije imena dohvaćena i prikazana u pregledniku.
Načini stanja ASP.NET sesije
ASP.NET može pohranjivati podatke sesije na nekoliko mjesta, koja se nazivaju načini stanja sesije. Način koji odaberete utječe na performanse, skalabilnost i hoće li podaci preživjeti ponovno pokretanje aplikacije. Tablica u nastavku ih uspoređuje:
| način | Gdje se pohranjuje stanje | Najbolje za |
|---|---|---|
| Ulazni postupak | U memoriji web poslužitelja (zadano) | Aplikacije za jedan poslužitelj; najbrže, ali se gube pri ponovnom pokretanju |
| StateServer | Zaseban proces ASP.NET State Servicea | Web farme; preživljava ponovna pokretanja aplikacija |
| SQLServer | Baza podataka SQL Servera | Web farme kojima je potrebno izdržljivo i skalabilno stanje |
| običaj | Prilagođeni pružatelj usluga kojeg implementirate | Specijalizirane trgovine poput Redisa |
| od | Stanje sesije onemogućeno | Aplikacije koje ne trebaju sesije |
InProc je zadani i najbrži, ali za implementacije s uravnoteženim opterećenjem, StateServer ili SQLServer održava sesije dostupnima na više poslužitelja.
Kako konfigurirati vremensko ograničenje sesije u ASP.NET-u
Sesija ne traje vječno; istječe nakon razdoblja neaktivnosti. Ovo vremensko ograničenje možete postaviti u datoteci web.config pomoću elementa sessionState, gdje je vrijednost vremenskog ograničenja u minutama:
<configuration> <system.web> <sessionState mode="InProc" timeout="20" /> </system.web> </configuration>
Također ga možete postaviti u kodu s Session.Timeout = 30;Zadano vrijeme čekanja je 20 minuta. Odabirom kraćeg vremena čekanja brže se oslobađa memorija poslužitelja i poboljšava sigurnost, dok dulje vrijeme čekanja korisnika dulje ostaje prijavljenima.
Prednosti i nedostaci stanja sesije
Stanje sesije je praktično, ali ima kompromise koje biste trebali odvagnuti prije nego što se na njega uvelike oslonite.
Prednosti:
- Jednostavno za korištenje za pohranjivanje podataka po korisniku, kao što je trgovinaping podatke za košaricu ili prijavu.
- Može pohranjivati složene objekte, ne samo stringove.
- Podaci se čuvaju na poslužitelju, pa je sigurnije od pohrane na strani klijenta.
Nedostaci:
- InProc način rada troši memoriju poslužitelja i ne skalira se unutar web farme.
- Podaci sesije gube se kada sesija istekne ili kada se aplikacija ponovno pokrene (u InProc načinu rada).
- Pohranjivanje velikih količina podataka po korisniku može negativno utjecati na performanse pod velikim opterećenjem.



