Správa relací ASP.NET [Příklad]

⚡ Chytré shrnutí

Správa relací ASP.NET umožňuje bezstavové HTTP aplikaci pamatovat si uživatelská data napříč požadavky. Vysvětluje ViewState, objekt Session pro ukládání párů klíč-hodnota, funkční příklad, režimy stavu relace, konfiguraci časového limitu a výhody stavu relace.

  • 🌐 Bezstavový HTTP: HTTP neuchovává data mezi požadavky, takže ASP.NET přidává mechanismy pro zachování stavu.
  • 🗂️ Stav zobrazení: ViewState automaticky přenáší řídicí hodnoty z jedné stránky na další.
  • 🔑 Objekt relace: Session[„Klíč“] ukládá a načítá páry klíč-hodnota v průběhu celého životního cyklu aplikace.
  • ⚙️ Stavové režimy: Stav relace lze uložit do procesu (InProc), na StateServer, v SQL Serveru nebo ve vlastním úložišti.
  • ⏱️ Časový limit: Časový limit sessionState v souboru web.config určuje, jak dlouho zůstane relace aktivní.

Kurz správy relací ASP.NET s příkladem

Správa relací ASP.NET

Protokol HTTP, na kterém fungují všechny webové aplikace, je bezstavový protokol. Pojem bez státní příslušnosti pouze znamená, že informace nejsou uchovávány z jedné žádosti do druhé.

Například, pokud jste měli přihlašovací stránku, která má 2 textová pole, jedno pro jméno a druhé pro heslo. Když na této stránce kliknete na tlačítko Přihlásit, aplikace musí zajistit, aby bylo uživatelské jméno a heslo předáno na další stránku.

V ASP.Net se to dělá různými způsoby. Prvním způsobem je koncept zvaný ViewState. Zde ASP.Net automaticky ukládá obsah všech ovládacích prvků. Také zajišťuje, aby byl tento obsah předán na další stránku. To se provádí pomocí vlastnosti s názvem ViewState.

Pro vývojáře není ideální cokoliv měnit ve stavu pohledu. Je to proto, že by to mělo být zpracováno pouze ASP.Net.

Objekt relace ASP.NET

Druhým způsobem je použití objektu zvaného „Objekt relace“. Objekt Session je dostupný po celou dobu životního cyklu aplikace. V objektu Session můžete uložit libovolný počet párů klíč–hodnota. Na libovolné stránce tedy můžete uložit hodnotu do objektu Session prostřednictvím níže uvedeného řádku kódu.

Session["Key"] = value

Tím se hodnota uloží do objektu Session a část „klíč“ se použije k pojmenování hodnoty. To umožňuje načíst hodnotu později. Chcete-li načíst hodnotu, můžete jednoduše zadat následující příkaz.

Session["Key"]

Příklad objektu relace ASP.NET

V našem příkladu použijeme objekt Session k uložení názvu zadaného do textového pole s názvem na stránce. Tuto hodnotu pak načteme a zobrazíme ji na stránce. Do souboru Demo.aspx.cs přidejme níže uvedený kód.

Použijte objekt relace

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 Vysvětlení:-

  1. První řádek kódu bere hodnotu textového pole Name a ukládá ji do objektu Session. Zadáním kódu Session[„Name“] pojmenujeme vlastnost s názvem „Name“. Zadáním názvu vlastnosti se její pozdější načtení snadněji provede.
  2. Další řádek kódu načte uloženou hodnotu z objektu Session. Tuto hodnotu pak zapíše pomocí metody 'Response.Write' zpět klientovi.
  3. Nakonec všechny ovládací prvky na formuláři nastavíme jako neviditelné. Pokud to neuděláme, zobrazí se všechny ovládací prvky a hodnoty našich odpovědí společně.

Jakmile provedete výše uvedené změny, uvidíte následující výstup.

Výstup:

Použijte objekt relace

Z výstupu můžete vidět, že hodnota Session názvu byla načtena a zobrazena v prohlížeči.

Režimy stavu relace ASP.NET

ASP.NET může ukládat data relací na několik míst, nazývaných režimy stavu relace. Zvolený režim ovlivňuje výkon, škálovatelnost a to, zda data přežijí restart aplikace. Následující tabulka je porovnává:

režim Kde je stav uložen Nejlepší pro
Vstupní proces V paměti webového serveru (výchozí) Aplikace pro jeden server; nejrychlejší, ale po restartu se ztratí
StateServer Samostatný proces služby ASP.NET State Service Webové farmy; přežije restartování aplikace
Server SQL Databáze SQL Serveru Webové farmy potřebující odolný a škálovatelný stav
Zvyk Vlastní poskytovatel, kterého implementujete Specializované obchody jako Redis
pryč Stav relace zakázán Aplikace, které nepotřebují relace

InProc je výchozí a nejrychlejší, ale pro nasazení s vyváženou zátěží udržuje StateServer nebo SQLServer relace dostupné napříč více servery.

Jak nakonfigurovat časový limit relace v ASP.NET

Relace netrvá věčně; její platnost vyprší po určité době nečinnosti. Tento časový limit můžete nastavit v souboru web.config pomocí elementu sessionState, kde hodnota časového limitu je v minutách:

<configuration>
  <system.web>
    <sessionState mode="InProc" timeout="20" />
  </system.web>
</configuration>

Můžete to také nastavit v kódu pomocí Session.Timeout = 30;Výchozí časový limit je 20 minut. Volbou kratšího časového limitu se rychleji uvolní paměť serveru a zlepší se zabezpečení, zatímco delší časový limit udrží uživatele déle přihlášené.

Výhody a nevýhody stavu relace

Stav relace je pohodlný, ale má své kompromisy, které byste měli zvážit, než se na něj budete silně spoléhat.

Výhody:

  • Snadné použití pro ukládání dat pro jednotlivé uživatele, například o obchoděping košík nebo přihlašovací údaje.
  • Může ukládat složité objekty, nejen řetězce.
  • Data jsou uchovávána na serveru, takže jsou bezpečnější než úložiště na straně klienta.

Nevýhody:

  • Režim InProc spotřebovává paměť serveru a neškáluje se v rámci webové farmy.
  • Data relace se ztratí, když relace vyprší nebo se aplikace restartuje (v režimu InProc).
  • Ukládání velkého množství dat na uživatele může při velkém zatížení negativně ovlivnit výkon.

Nejčastější dotazy

Ano. Asistenti s umělou inteligencí mohou generovat kód pro ukládání a čtení hodnot relace, navrhovat správný režim stavu a zapisovat nastavení web.config. RevProhlédněte si vygenerovaný kód a ověřte, zda splňuje vaše požadavky na škálovatelnost a zabezpečení.

Ano. Nástroje pro kontrolu kódu založené na umělé inteligenci mohou označit rizika, jako je fixace relace, chybějící soubory cookie pouze HTTPS nebo ukládání citlivých dat v relaci. Zjištění berte jako vodítko a před nasazením ověřte opravy bezpečnostním testováním.

Stav relace ukládá data pro relaci jednoho uživatele, zatímco stav aplikace ukládá data sdílená všemi uživateli aplikace. Stav relace použijte pro hodnoty pro jednotlivé uživatele a stav aplikace pro globální data, jako jsou čítače nebo konfigurace.

Ne. Každý uživatel má samostatnou relaci, identifikovanou jedinečným ID relace uloženým v souboru cookie. Jeden uživatel nemůže číst hodnoty relace jiného uživatele, a proto se pro data o jednotlivých uživatelích používá „relace“.

Shrňte tento příspěvek takto: