Programování

Jak pracovat s relacemi v ASP.Net

HTTP je bezstavový protokol. To znamená, že při každém odeslání nového požadavku z klienta na server dojde ke ztrátě informací o stavu předchozího požadavku. Existuje několik způsobů, jak ukládat a spravovat stav v ASP.Net. Objekt relace je jedním z nich, ostatní jsou objekty mezipaměti a aplikace.

Ukládání do mezipaměti zlepšuje výkon aplikace minimalizací spotřeby prostředků ve vašem systému. Můžete ukládat často používaná data nebo webové stránky, abyste zlepšili výkon a propustnost a škálovatelnost aplikace snížením spotřeby prostředků serveru.

Relaci můžete definovat jako relaci připojení mezi serverem a klientem - objekt relace obsahuje data, která odpovídají relaci uživatele. Relace je technika správy stavu na straně serveru, která se používá k ukládání konkrétních informací o uživateli do paměti pro pozdější načítání.

Režimy ukládání dat relace

Objekt relace je vytvořen a spravován na straně serveru. Režim úložiště relace určuje, kam mají být data relace uložena. Stav relace lze uložit v jednom z následujících režimů:

  1. V procesu: Uloženo ve stejném procesu ASP.Net
  2. State Server: Uloženo v nějakém jiném systému
  3. SQL Server: Uloženo v databázi SQLServer
  4. Vlastní: umožňuje vám ukládat data relací pomocí vlastního poskytovatele úložiště

Režim In-Proc pro ukládání dat relace je výchozím režimem a je také nejrychlejším ze všech dostupných režimů úložiště. V tomto režimu jsou data relace uložena v paměti serveru - uvnitř pracovního procesu ASP.Net. Tento režim byste měli použít, pokud je množství dat, které je třeba v relaci uložit, menší a pokud byste data nepotřebovali k přetrvávání. Je třeba poznamenat, že data relace uložená v tomto režimu jsou nestálá, tj. Jakmile je relace ukončena, data relace jsou ztracena. Data v relaci jsou tedy k dispozici, dokud je relace naživu.

V režimu stavového serveru jsou data relace uložena v samostatném procesu - tento stav se nazývá ASP.Net State Service. Jinými slovy, data relace v tomto režimu jsou uložena mimo pracovní proces ASP.Net nebo fond aplikací ve službě IIS. Na rozdíl od režimu In-Proc jsou data relace v režimu stavového serveru zachována, tj. Po restartování webové aplikace se neztratí.

Následující fragment kódu ukazuje, jak můžete nakonfigurovat stav relace ve vaší aplikaci tak, aby se ukládal v tomto režimu.

 

   

stateConnectionString = "tcpip = Server: 1234"

cookieless = "false"

časový limit = "20" />

 

Režim SQLServer úložiště dat relace se používá k přetrvávání dat relace vaší aplikace v databázi SQLServer. Podobně jako režim State Server úložiště dat relace, režim SQLServer také umožňuje přetrvávat data relace vaší aplikace přes restartování aplikace. Před použitím tohoto režimu byste měli zajistit, aby byla vytvořena databáze stavu relace ASP.Net. Tuto databázi můžete vytvořit pomocí nástroje příkazového řádku Aspnet_regsql.exe.

Následující fragment kódu ukazuje, jak můžete nakonfigurovat aplikaci tak, aby ukládala data relací v databázi SQLServer.

 

   

sqlConnectionString = "zdroj dat = server; id uživatele = joydip; heslo = sa1 @ 3"

cookieless = "false" timeout = "20" />

 

Podpora pro kompresi dat relace

Microsoft ASP.Net 4 představil novou funkci: kompresi stavu relace. S ASP.Net 4 a novějším můžete využít tuto integrovanou funkci ke kompresi dat relace pro ukládání relací mimo proces. Chcete-li využít této funkce, stačí v konfiguračním souboru vaší aplikace nastavit atribut compressionEnabled na hodnotu „true“. Následující fragment kódu ukazuje, jak to lze nakonfigurovat.

<>

mode = "SQLServer"

stateConnectionString = "nějaký připojovací řetězec ..."

compressionEnabled = "true" />

Stav relace umožňuje ukládat data specifická pro uživatele do paměti a jednoznačně identifikovat konkrétní požadavek. Data relace jsou uložena jako páry klíč / hodnota v SessionStateItemCollection a lze k nim přistupovat pomocí HttpContext.Session vlastnosti.

Následující příklady kódu ukazují, jak můžete ukládat a načítat data relace.

HttpSessionState.Session ["UserName"] = "John"; // ukládá data relace

string str = HttpSessionState.Session ["UserName"]. ToString ();

// Načte data relace

HttpSessionState.Remove ("Klíč k odebrání");

// Odebere objekt ze stavu relace