AspNet.sk     Diskusné fóra     Vitajte v QuickStarts     ASP.NET     Silverlight     Ako môžem...? (en)     Class prehliadač Príklady chcem v ...   
Menu
Skip Navigation Links.
Späť na ASP.NET príručku

ASP.NET QuickStart Príručka

Porozumenie aplikáciam a stavom

Novinky v 2.0

  • Session State Extensibility - Session State je teraz postavený na plne rozšíriteľnom modeli, založenom na modeli poskytovateľov. ASP.NET 2.0 je dodávaný s poskytovateľmi pre in-process, out-of-process a Sql Server storage. Avšak vývojári môžu implementovať aj vlastných poskytovateľov, ktorí pracujú nad inými dátovými skladmi zdedením z SessionStateStoreProviderBase. Funkcie Session State taktiež dovoľujú vývojárom vytvoriť vlastné generátory session ID, tak ako vlastné HttpModules pre nahradenie predvoleného SessionStateModule. Pre rozšíriteľnosť, poskytovatelia Sql Server a out-of-process Session State dovoľujú vývojárom dynamicky určiť na základe požiadaviek stav session servera, ktorý by mal načítať a uskladniť dáta zo session. To umožňuje, aby boli session state údaje rozptýlené naprieč mnohými state servermi.


  • Control State - Mimo ViewState, ovládacie prvky teraz môžu použiť slovník ControlState pre uchovanie informácií použitím klienta. Slovník ControlState je určený pre uchovanie informácie limitovanej veľkosti, ktoré sú rozhodujúce pre fungovanie ovládacieho prvku. Táto vlasnosť nie je zablokovaná, keď má EnableViewState hodnotu false.


  • Zakódovaný ViewState - ASP.NET 2.0 povoľuje zakódovanie ViewState cez atribút ViewStateEncryptionMode direktívy Page. Toto môže byť využité pre ochránenie citlivých dát, ktoré sú uložené vo viewstate, a ktoré by nemali byť viditeľné pre klienta. Táto funkcia sa bežne používa pre zakódovanie hodnôt DataKeyNames z ovládacieho prvku GridView.
Táto časť hovorí o týchto, ale aj ďalších funkciách riadenia aplikácii a stavu v ASP.NET 2.0.


Čo je ASP.NET aplikácia?

ASP.NET definuje aplikáciu ako súhrn všetkých súborov, stránok, handlerov, modulov a spustiteľný kód, ktorý môže byť vyvolaný alebo spustený v oblasti daného virtuálneho adresára (a jeho podadresárov) na serveri webovej aplikácie. Napríklad aplikácia "order" môže byť uverejnená vo virtuálnom adresári "/order" na počítači webového servera. Pre IIS môže byť virtuálny adresár nastavený v Internet Services Manager; obsahuje všetky podadresáre, pokiaľ samotné podadresáre nie sú virtuálnymi adresármi.

Každá ASP.NET Framework aplikácia na webovom serveri je spustená v rámci unikátnej aplikačnej domény .NET Frameworku, ktorá garantuje izoláciu tried (žiadne konflikty vo verziách alebo názvoch), security sandboxing (zabránenie prístupu k určitým lokálnym alebo sieťovým zdrojom), a izolácia statických premenných.

ASP.NET udržuje množstvo inštancií HttpApplication počas životného cyklu webovej aplikácie. ASP.NET automaticky prideľuje jednu z týchto inštancií pre spracovanie každej prichádzajúcej HTTP požiadavky, ktorá je prijatá aplikáciou. Príslušná priradená HttpApplication inštancia je zodpovedná za riadenie celého životného cyklu požiadavky a je opätovne použitá až po dokončení požiadavky. To znamená, že kód používateľa v rámci HttpApplication nie je potrebné opätovne zadať.

Vytváranie aplikácie

Pre vytvorenie ASP.NET Framework aplikácie môžete použiť už existujúci virtuálny adresár alebo si vytvoriť nový. Napríklad ak ste nainštalovali Windows 2000 Server vrátane IIS, pravdepodobné máte adresár C:\InetPub\WWWRoot. Môžete nakonfigurovať IIS použitím Internet Services Manager, prístupného cez Štart (Start) -> Programy (Programs) -> Nástroje na správu (Administrative Tools). Kliknite pravým tlačidlom na existujúci adresár a vyberte buď Nový (New) (pre vytvorenie nového virtuálneho adresára) alebo Vlastnosti (Properties) (pre povýšenie už existujúceho štandardného adresára).

Umiestnením jednoduchej .aspx stránky, ako v príklade, do virtuálneho adresára a pristúpením k nej cez prehliadač, spustíte vytvorenie ASP.NET aplikácie.


<%@Page Language="VB"%>
<html>
<body>
<h1>hello world, <% Response.Write(DateTime.Now.ToString()) %></h1>
</body>
</html>
VB

Teraz môžete pridať vhodný kód napríklad pre použite objektu Application -- pre uchovanie objektov (v rámci aplikácie). vytvorením súboru global.asax môžete taktiež definovať rôzne event handlery -- napríklad pre udalosť Application_Start.

Životný cyklus aplikácie

ASP.NET Framework aplikácia je vytvorená pri prvej požiadavke podanej na server; predtým nie je spustený žiadny ASP.NET kód. Keď je podaná prvá požiadavka, je vytvorených množstvo inštancii HttpApplication a je vyvolaná udalosť Application_Start. Inštancie HttpApplication spracovávajú túto a následné požiadavky, až pokým sa posledná inštancia ukončí a je vyvolaná udalosť Application_End.

Metódy Init a Dispose inštancie HttpApplication sú volané každou inštanciou a tak môžu byť volané niekoľko krát medzi Application_Start a Application_End. Iba tieto udalosti sú zdieľané spomedzi všetkých inštancii HttpApplication v jednej ASP.NET aplikácii.

Poznámka k viacnásobným vláknam

Ak uchovávate objekty (na úrovni aplikácie), mali by ste si byť vedomý, že ASP.NET spracováva požiadavky súbežné a že k objektu Application sa môže pristupovať mnohými vláknami. Z tohto dôvodu je nasledujúci kód nebezpečný a nemusí vytvoriť očakávaný výsledok, ak je stránka opakovane žiadaná rôznymi klientmi v rovnakom čase.


<%
Application("counter") = CType(Application("counter"), Int32) + 1
%>
VB

Na vytvorenie tohto kódu bezpečným, serializujte prístup k objektu Application využitím metód Lock a UnLock. Avšak tento krok taktiež znamená prijatie značnej straty výkonnosti. Ďalším riešením je vytvoriť objekt uchovaný na úrovni aplikácie ako thread-safe.


<%
Application.Lock()
Application("counter") = CType(Application("counter"), Int32) + 1
Application.UnLock()
%>
VB

Kolekcia HttpApplicationState použitá vyššie je primárne určená pre spätnú kompatibilitu s klasickým ASP a bude dôverne známa ASP vývojárom. Avšak používanie statických polí v ASP.NET je štandardne preferované cez použite HttpApplicationState.


<script language="VB" runat="server">
  Public Shared counter As Integer
</script>

<%
System.Threading.Interlocked.Increment( counter )
%>
VB
Microsoft .NET Framework SDK QuickStart Tutorials Version 2.0
Copyright © 2005 Microsoft Corporation. All rights reserved.
Preklad do slovenského jazyka - Copyright © 2005 - 2007 www.aspnet.sk, www.qsh.sk
Pošlite komentár k tejto stránke
Copyright © 2002 - 2008 Chastia, spol. s r. o., Igor Stanek, Designed by Lacino
Portál je hostovaný na serveroch firmy Quantasoft - www.qsh.sk.