Managementul statului în ASP.NET

Aplicațiile ASP.NET sunt găzduite pe servere web . Acestea sunt accesate prin protocolul HTTP fără stat . Practic, dacă o aplicație folosește interacțiunea cu stare, trebuie să implementeze managementul de stat pe cont propriu. ASP.NET oferă diferite moduri de a gestiona starea aplicației în ASP.NET [1] :

Starea aplicației

Starea aplicației este folosită în principal pentru a stoca date globale în cadrul unei aplicații. Acesta se află în memoria serverului și vă permite să stocați toate tipurile de date .NET . Durata de viață a variabilelor este aceeași cu durata de viață a unei aplicații ASP.NET . Variabilele de stare a aplicației sunt setate și inițializate la un eveniment Application_OnStartîn timpul fazei de încărcare a primei instanțe de aplicație și rămân disponibile atâta timp cât există ultima instanță de aplicație. Aceste variabile sunt disponibile pe toate paginile web prin intermediul obiectului încorporat Applicationși sunt identificate prin numele lor [2] .

Vedeți starea

Starea de vizualizare se referă la mecanismul de gestionare a stării la nivel de pagină care este utilizat de paginile HTML pentru a stoca starea componentelor formularului web și a widget -urilor . Când este solicitată serverului, starea curentă a componentelor (controalelor) este codificată și trimisă serverului într-un câmp ascuns __VIEWSTATE. Serverul trimite înapoi variabila, astfel încât atunci când pagina este redată din nou, controalele sunt redate în cea mai recentă stare. Pe partea de server, o aplicație poate schimba starea de vizualizare dacă rezultatele procesării actualizează cel puțin un control pe pagină. Starea fiecărei componente este decodificată pe server și disponibilă pentru utilizare în paginile ASP.NET prin colecția ViewState[3] .

Starea sesiunii

Starea sesiunii este un set de variabile utilizator care continuă să existe în timpul sesiunii utilizatorului. Aceste variabile sunt unice pentru diferitele instanțe de sesiune de utilizator și sunt disponibile prin intermediul Session. Aceste variabile de sesiune pot fi configurate pentru a fi distruse automat după o anumită perioadă de timp în care utilizatorul a fost inactiv, chiar dacă sesiunea nu s-a încheiat încă. Pe partea clientului, o sesiune de utilizator este identificată printr-un cookie sau prin ID-ul sesiunii din URL -ul său [2] .

ASP.NET suportă următoarele moduri de existență a variabilelor de sesiune [2] :

InProc Variabilele de sesiune sunt menținute în cadrul procesului ASP.NET . Cu toate acestea, în acest mod, variabilele sunt distruse atunci când procesul ASP.NET este repornit sau terminat. StateServer În acest mod, ASP.NET pornește un serviciu separat ( serviciu ) care menține variabilele de stare. Deoarece managementul stării are loc în afara procesului ASP.NET , acest lucru are un impact negativ asupra performanței, dar permite multor instanțe ASP.NET să partajeze un server de stare comun, permițând astfel unei aplicații ASP.NET să fie distribuită uniform pe diferite servere (echilibrare ).încărcarea și scalarea la mai multe servere). Deoarece serviciul de gestionare a stării rulează independent de ASP.NET , variabilele pot exista după ieșirea procesului ASP.NET . SQL Server În acest mod, variabilele de stare sunt stocate pe serverul bazei de date și sunt disponibile prin SQL . Variabilele de stare pot exista după ieșirea procesului ASP.NET , la fel ca în cazul precedent. Personalizat Acest mod necesită să specificați furnizorul magazinului de sesiuni folosind atributul customProvider. Cel mai frecvent utilizat atunci când informațiile despre sesiune trebuie stocate într-o bază de date, alta decât SqlServer (cum ar fi MySql sau Oracle). Off Gestionarea stării sesiunii este dezactivată. Exemplu de sesiune Session [ "Name" ] = "Vasili Pupkin" ; //Sesiune["Nume"] = (obiect); sesiune . Adăugați ( „Vârsta” , 16 ); //Obțineți valoarea. răspuns . Scrieți (( șir ) Sesiune [ „Nume” ] + „: „ + Sesiune [ „Vârsta” ]. ToString () + „-ani vechi.” ); Rezultatul este scris în răspunsul http al serverului web

Василий Пупкин: 16-years old.

Șir de interogare (URL)

O cantitate mică de informații poate fi transmisă de la pagină la server folosind parametrii șirului de interogări, oferind astfel suport cu stare. Acesta este cel mai simplu mod de a menține starea în aplicațiile ASP.NET, acoperind doar o pagină. Dacă utilizatorul închide browserul, starea este pierdută (cu excepția cazului în care sunt folosite unele trucuri suplimentare pentru a stoca datele de stare, cum ar fi într-un cookie). Dezavantajele acestei metode sunt:

  • dimensiune limitată șir de interogare (1-2 KB),
  • nesigur: șirul poate fi ușor modificat de către utilizator [1] .

Note

  1. 1 2 McDonald Matthew. Microsoft ASP.NET 4 cu exemple C# 2010 pentru profesioniști. - M. : Apress, 2011. - 1424 p. — ISBN 978-5-8459-1702-7 .
  2. 1 2 3 INFORMAȚII: Privire generală asupra managementului stării ASP.NET . Consultat la 23 octombrie 2007. Arhivat din original pe 26 octombrie 2005.
  3. ViewState în ASP.NET (downlink) . Consultat la 23 octombrie 2007. Arhivat din original pe 14 octombrie 2007.