Államkezelés az ASP.NET-ben

Az ASP.NET alkalmazások webszervereken vannak tárolva . Az állapot nélküli HTTP protokollon keresztül érhetők el . Alapvetően, ha egy alkalmazás állapotalapú interakciót használ, akkor önállóan kell megvalósítania az állapotkezelést. Az ASP.NET különféle módokat kínál az alkalmazás állapotának kezelésére az ASP.NET -ben [1] :

Alkalmazás állapota

Az alkalmazás állapota elsősorban globális adatok tárolására szolgál egy alkalmazáson belül. A szerver memóriájában található, és lehetővé teszi az összes .NET adattípus tárolását . A változók élettartama megegyezik egy ASP.NET -alkalmazás élettartamával . Az alkalmazásállapot-változók beállítása és inicializálása egy eseményen Application_OnStartaz első alkalmazáspéldány betöltési fázisában történik, és mindaddig elérhetőek maradnak, amíg az utolsó alkalmazáspéldány létezik. Ezek a változók minden weboldalon elérhetők a beépített objektumon keresztül, Applicationés nevük alapján azonosíthatók [2] .

Állapot megtekintése

A nézet állapota az oldalszintű állapotkezelési mechanizmusra utal, amelyet a HTML -oldalak használnak a webes űrlap-összetevők és modulok állapotának tárolására . Amikor a szerver kéri, az összetevők (vezérlők) aktuális állapota kódolásra kerül, és egy rejtett mezőben elküldésre kerül a szervernek __VIEWSTATE. A kiszolgáló visszaküldi a változót, így az oldal újbóli megjelenítésekor a vezérlőelemek a legutóbbi állapotukban jelennek meg. A szerver oldalon egy alkalmazás módosíthatja a nézet állapotát, ha a feldolgozási eredmények legalább egy vezérlőt frissítenek az oldalon. Az egyes összetevők állapotát a szerver dekódolja, és elérhetővé teszi az ASP.NET oldalakon a ViewState[3] gyűjtemény segítségével .

Munkamenet állapota

A munkamenet állapota a felhasználói változók halmaza, amelyek továbbra is léteznek a felhasználó munkamenete alatt. Ezek a változók egyediek a különböző felhasználói munkamenet-példányokhoz, és a következőn keresztül érhetők el Session. Ezek a munkamenet-változók beállíthatók úgy, hogy automatikusan megsemmisüljenek egy bizonyos ideig, amikor a felhasználó inaktív, még akkor is, ha a munkamenet még nem ért véget. A kliens oldalon a felhasználói munkamenetet egy cookie vagy az URL -jében található munkamenet-azonosító azonosítja [2] .

Az ASP.NET a következő munkamenet-változókat támogatja [2] :

InProc A munkamenet-változók az ASP.NET folyamaton belül vannak karbantartva . Ebben a módban azonban a változók megsemmisülnek, amikor az ASP.NET folyamatot újraindítják vagy leállítják. StateServer Ebben a módban az ASP.NET egy külön szolgáltatást ( service ) indít el, amely állapotváltozókat karbantart. Mivel az állapotkezelés az ASP.NET folyamaton kívül történik, ez negatív hatással van a teljesítményre, de lehetővé teszi számos ASP.NET -példány megosztását egy közös állapotkiszolgálón, így lehetővé válik az ASP.NET -alkalmazások egyenletes elosztása a különböző szerverek között (kiegyensúlyozás). ). betöltés és méretezés több szerverre). Mivel az állapotkezelési szolgáltatás az ASP.NET-től függetlenül fut , az ASP.NET folyamat kilépése után is létezhetnek változók . SQL szerver Ebben a módban az állapotváltozók az adatbázis-kiszolgálón tárolódnak, és SQL -en keresztül érhetők el . Állapotváltozók létezhetnek az ASP.NET folyamat kilépése után, akárcsak az előző esetben. Egyedi Ebben a módban meg kell adnia a munkamenet-tároló szolgáltatóját a customProvider attribútum használatával. Leggyakrabban akkor használatos, ha a munkamenet-információkat az SqlServertől eltérő adatbázisban kell tárolni (például MySql vagy Oracle). Ki A munkamenet állapotának kezelése le van tiltva. Munkamenet példa Session [ "Név" ] = "Vaszilij Pupkin" ; //Session["Név"] = (objektum); munkamenet . Add ( "Kor" , 16 ); //Kérje meg az értéket. válasz . Write (( string ) Session [ "Name" ] + ": " + Session [ "Age" ]. ToString () + "-years old." ); Az eredmény a webszerver http-válaszában van írva

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

Lekérdezési karakterlánc (URL)

A lekérdezési karakterlánc paraméterek segítségével kis mennyiségű információ továbbítható az oldalról a szerverre, így biztosítva az állapotalapú támogatást. Ez a legegyszerűbb módja az állapot fenntartásának az ASP.NET alkalmazásokban, amely csak egy oldalt fed le. Ha a felhasználó bezárja a böngészőt, az állapot elveszik (kivéve, ha valamilyen extra trükköt alkalmaznak az állapotadatok tárolására, például cookie-ban). Ennek a módszernek a hátrányai a következők:

  • korlátozott lekérdezési karakterlánc mérete (1-2 KB),
  • nem biztonságos: a karakterláncot a felhasználó könnyen módosíthatja [1] .

Jegyzetek

  1. 1 2 McDonald Matthew. Microsoft ASP.NET 4 C# 2010 példákkal szakembereknek. - M. : Apress, 2011. - 1424 p. — ISBN 978-5-8459-1702-7 .
  2. 1 2 3 INFORMÁCIÓ: ASP.NET állapotkezelés áttekintése . Letöltve: 2007. október 23. Az eredetiből archiválva : 2005. október 26..
  3. ViewState az ASP.NET-ben (lefelé irányuló kapcsolat) . Letöltve: 2007. október 23. Az eredetiből archiválva : 2007. október 14..