ASP.NET PageState a jeho efektivní správa
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ASP.NET PageState a jeho efektivní správaASP.NET PageState a jeho efektivní správa

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

ASP.NET PageState a jeho efektivní správa

Google       Google       1. 3. 2007       8 794×

Článek obsahuje popis řešení efektivní správy ASP.NET PageState. Zabývá se problémy, jako je např. uložení PageState na serveru a šifrování. Pro lepší pochopení uveřejňuji okomentované zdrojové soubory ke stažení.

Reklama
Reklama

V rámci svého webu jsem vytvořil nestandardní, ale velmi efektivní systém, který se stará o ukládání a načítání pagestate. Předně bych rád zmínil, že se nejedná o návod, ale spíš o popis řešení. V projektu jsou řešeny tyto problémy: ukládání identifikátoru do původního skrytého pole, automatické mazání starších záznamů, šifrování pagestate a samozřejmě jeho ukládání různými způsoby na server. V závěru vám nabídnu celý projekt s podrobně okomentovanými zdroji ke stažení a na případné dotazy rád odpovím.

Základ

Základem celého systému jsou třídy HiddenFieldPageStatePersister a PageStateManager. Obě třídy v rozporu s vaším očekáváním dědí ze standardní třídy System.Web.UI.HiddenFieldPageStatePersister, ale první z nich ke standardnímu způsobu ukládání přidává pouze šifrování s pomocí šifry Rijndael, a proto se jí nebudu věnovat. Šifrování zajišťuje statická třída, kterou používám už dlouhou dobu a funguje velice spolehlivě – nejsem jejím autorem a bohužel si nevzpomínám na její původ. Druhá třída se stará o kompletní správu pagestate, jeho serverové ukládání, načítání i odstranění. Nejdůležitější jsou přepsané metody Load a Save, ve kterých se používá tzv. fiktivní pagestate. Celé to spočívá v tom, že pagestate uložíte na server a základní třídě podstrčíte identifikátor, ta ho uloží do skrytého pole. Třída také obsahuje metodu, která v případě potřeby odstraní přebytečný záznam s pagestate.

Uchovávání na serveru

O samotné uchovávání na serveru se stará nějaký persister, který implementuje rozhraní IPageStatePersister, které definuje metody pro uložení, načtení a odstranění pagestate na serveru. K dispozici jsou persistery pro souborový systém, SQL databázi a session. Další persistery je možné poměrně snadno začlenit do projektu, a nebo ho můžete přiřadit přes konfigurační soubor – jako hodnotu atributu Persister uveďte zápis typ,assembly.

Cache

Poslední podstatnou částí je třída PageStateCahe, která implementuje timeout pro záznamy uložené na serveru. Dvanáct hodin po vytvoření záznamu dojde k vyvolání události, při které dojde k zavolání metody persisteru, která odstraní pagestate. Ke kontrole dochází každou minutu.

Konfigurace

O deklarativní konfiguraci se stará třída SectionHandler, která, jak už z názvu vyplývá, implementuje handler pro vlastní sekci v konfiguračním souboru web.config. Handler musíte připojit v části configSections.

<?xml version="1.0"?>
<configuration>
  <!-- nastavení aplikace -->
  <configSections>
    <!-- konfigurace sekcí -->
    <sectionGroup name="Programujte">
      <!-- přiřazení handleru k sekci -->
      <section name="PageStateSettings" type="Programujte.PageState.SectionHandler, PageState" />
    </sectionGroup>
  </configSections>

  <!-- řetězce pro připojení k DB -->
  <connectionStrings>
    <add name="ConnectionString" connectionString="řetězec pro připojení"/>
  </connectionStrings>

  <!-- skupina sekci Programujte -->
  <Programujte>
    <!-- nastavení page adaptéru, který se stará o alternativní ukládání pagestate -->
    <PageStateSettings CacheTimeOut="720" ConnectionStringName="ConnectionString" Enabled="true" Encryption="true" FolderPath="~\pagestate"  Persister="SQL" IDColumnName="pagestateID" StateColumnName="pagestate" TableName="pagestate">
      <!-- soubory, ve kterých bude uplatněn standardní postup uložení pagestate -->
      <ExcludedFiles>
        <!-- není defaultní -->
        <add path="~\*.aspx" />
        <remove path="~\*.aspx" />
      </ExcludedFiles>
    </PageStateSettings>
  </Programujte>
</configuration>

Následující tabulka popisuje význam atributů a podsekcí sekce PageStateSettings. Výchozí hodnoty jsou zvýrazněné tučně.

Atribut / podsekce Možné hodnoty Význam
CacheTimeOut Libovolné číslo (720). Životnost záznamů v minutách.
ConnectionStringName Libovolný řetězec (ConnectionString). Název jednoho z řetězců v sekci connectionStrings.
Enabled True nebo false. Rychlé vypnutí nebo zapnutí správy pagestate.
Encryption True nebo false. Rychlé vypnutí nebo zapnutí šifrování pagestate.
FolderPatch Libovolná cesta ~\* (~\pagestate). Cesta, kam mohou být uloženy soubory s pagestate.
Persister SQL, File, Session, HiddenField nebo zápis typ,assembly. Udává, jaký persister se má použít.
IDColumnName Libovolný řetězec (pagestateID). Název sloupce, kam se ukládá identifikátor.
StateColumnName Libovolný řetězec (pagestate). Název sloupce, kam se ukládá pagestate.
TableName Libovolný řetězec (pagestate). Název databázové tabulky, která obsahuje výše zmíněné sloupce.
ExcludedFiles <add path="~\*.aspx" />
<remove path="~\*.aspx" />
Kolekce souborů, kde bude uplatněn standardní postup uložení pagestate.

Použití na webu

Pro použití na webu slouží třída PageAdapter, kterou ke svému projektu přiřadíte s pomocí souboru .browser. Soubor s následujícím obsahem uložte do složky App_Browsers ve vašem webovém projektu.

<browsers>
  <browser refID="Default" >
    <controlAdapters>
      <adapter controlType="System.Web.UI.Page" adapterType="Programujte.PageState.PageAdapter" />
    </controlAdapters>
  </browser>
</browsers>

Závěr

Článek je určen pro pokročilé vývojaře, ale doufám, že jsem všem dostatečně vysvětlil, o co vlastně jde. Další podrobnosti se dovíte v kompletních a okomentovaných zdrojových souborech, které si můžete stáhnout, libovolně upravit a šířit dál. K provozu potřebujete ASP.NET server s podporou .NET 2.0+, pro .NET 1.x nebo MONO je nutné provést drobné úpravy. Na projektu je určitě hodně co zlepšovat, ale to už nechám na vás.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Dušan JanošíkDušan vyvíjí software a webové aplikace na platformě .NET. Je milovníkem neuznávaných teorií, a zajímá se o parapsychologii a teraristiku.
Web     Twitter     Facebook     LinkedIn    

Nové články

Obrázek ke článku Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý