INFORMACE: Instance aplikace, události aplikací a stavu aplikací v ASP.NET

Překlady článku Překlady článku
ID článku: 312607 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Objekt ASP.NET HttpApplication skryje mnoho složité pojmy zjednodušit model programování. Tento článek popisuje některé tyto dokáže. Kromě toho tento článek popisuje, jak zpracovává problémy s kompatibilitou s klasickou objektu Microsoft Active Server Pages (ASP) aplikací ASP.NET.

Tento článek je rozdělen do následujících oddílů:

Další informace

Aplikace tříd a instancí aplikace

Třída aplikace je definována v souboru Global.asax. Kód Global.asax definuje nové třídy, která je odvozená od System.Web.HttpApplication. Do souboru Global.asax absence základní třídy HttpApplication slouží jako třídy aplikace.

Modul runtime ASP.NET vytvoří tolik instance tříd aplikace podle potřeby zpracování požadavků současně. Pro většinu aplikací toto číslo je omezen počet podprocesů a zůstane v rozsahu 1 až 100 v závislosti na hardwaru, zatížení serveru, konfigurace a tak dále. Mnoho požadavků znovu použít instance aplikace a během období sníženou zatížení je uchována volného seznamu instancí aplikace. Instance aplikace jsou používány v podprocesu bezpečné způsobem, to znamená jeden požadavek současně. To má důležité důsledky:
  • Muset obávat o zamykání při přístupu-statické členy třídy aplikace.
  • Kód aplikace mohou ukládat data požadavek pro každý požadavek v-statické členy třídy aplikace (ale není po události EndRequest protože této události může udržovat požadavek dlouhou dobu).
Protože statické členy třídy aplikace, včetně libovolné třídy není bezpečné podprocesu, musí poskytnout příslušné zamykání pro přístup k statické členy kód uživatele. To platí pro všechny statické člen přidat třídy aplikace.

Přístup k instanci aplikace je přidružena aktuální požadavek použijte následující pokyny:
  • Z Global.asax použijte Tento nebo Me objektu.
  • Ze stránky obsahuje vlastnost ApplicationInstance silnými každé stránky.
  • Z objektu HttpContext vlastnost HttpContext.ApplicationInstance (které zadejte jako HttpApplication).
Poznámka: Protože aplikace odkazuje na globální aplikace slovníku stavu v klasické technologie ASP, ASP.NET používá ApplicationInstance a nikoli aplikací jako název vlastnosti odkázat zpracuje požadavek aktuální instance aplikace.

Události aplikace

Životnost požadavek se skládá z řady události aplikací (a některé implicitní kroky implementuje ASP.NET). Tyto události jsou uvedeny níže v pořadí, ve kterém jsou prováděny:
  1. BeginRequest
  2. Událost AuthenticateRequest
  3. Vnitřní událost DefaultAuthentication
  4. Událost AuthorizeRequest
  5. Událost ResolveRequestCache
  6. Vnitřní kroku "Mapa popisovač" (při kompilaci proběhne instance stránky je vytvořen)
  7. Událost AcquireRequestState
  8. Událost PreRequestHandlerExecute
  9. Vnitřní kroku "spustit rutinu" (kód stránky provedení)
  10. Událost PostRequestHandlerExecute
  11. Událost ReleaseRequestState
  12. Vnitřní krok filtru odpovědi UpdateRequestCache událostí
  13. Událost UpdateRequestCache
  14. Událost EndRequest
Poznámka: Pokud použijte Server.Transfer nebo Response.Redirect(string) aktuální požadavek efektivně přerušena a některé události, které jsou uvedeny výše není být aktivována. Událost EndRequest však bude být aktivována v tomto scénáři.

Tyto události může zpracovávat následující položky:
  • Vnitřní framework stránku ASP.NET (například kroky 6, 9 a 12 v předchozím seznamu).
  • Moduly HTTP, které jsou nakonfigurovány pro aplikaci. Výchozí seznam moduly HTTP definované v souboru.
  • Kód, který je připojený prostřednictvím metody Application_ [Zapnuto] EventName nebo, který je připojený explicitně při přidání obslužné rutiny pro obslužnou rutinu alternativní název Global.asax.
Každá událost může mít synchronní a asynchronní odběratelům. Nejprve jsou spouštěny asynchronní odběratelům. Ne všechny události jsou vždy provedeny; je pouze události, které vždy provedeny EndRequest. V důsledku toho provést vyčištění všech after-request v EndRequest události.

Poznámka: Ve většině případů skutečnou odpověď je odeslána klientovi po dokončení instance aplikace s odpovědí (což je po EndRequest).

Application_OnStart a Application_OnEnd

ASP.NET zavádí jedinečný Application_OnStart a Application_OnEnd "události" pro kompatibilitu se klasická technologie ASP. Tyto "událostí" jsou prováděna v dobu života aplikace a nikoli pro všechny instance aplikace pouze jednou. Proto pokud změnit nestatický členy v těchto metod můžete ovlivnit pouze jedna aplikace instance a všechny instance. Jedna instance aplikace v konstruktoru nebo přepsání metodu Inicializace možné inicializovat.

Application_OnStart je logický ekvivalent konstruktoru třídy třídy aplikace, ale nabízí jednu výhodu: kód má přístup k HttpContext pro první požadavek do aplikace.

Stav aplikace

Stav aplikace je globální slovník pozdní vazbou objekty, které klasická technologie ASP zavádí kompenzovat absence globální proměnné Microsoft Visual Basic Scripting Edition (VBScript). V aplikaci ASP.NET můžete stav aplikace přistupovat prostřednictvím jednu z následujících:
  • Vlastnost aplikace (která je definována v třídách Stránka a HttpApplication)
  • HttpContext.Application
ASP.NET obsahuje stav aplikace především pro kompatibilitu se klasická technologie ASP, takže je snadnější migrace existujících aplikací ASP.NET. Je doporučeno ukládat data ve statické členy třídy aplikace místo do objektu Application. Protože přístup statická proměnná rychleji než přístup položku v aplikaci. Tím se zvýší výkon slovníku.

Přístup k aplikaci statické členy ze stránek Microsoft Visual C# .NET a Microsoft Visual Basic .NET, musíte použít atribut NázevTřídy v Global.asax název třídy aplikace. Pro příklad:
<%@ Application Language="C# | VB" ClassName="MyClass" %>
				
statické člen pojmenované MyStaticMember v souboru Global.asax, můžete použijete-li MyClass.MyStaticMember přístup ze stránky.

Vlastnosti

ID článku: 312607 - Poslední aktualizace: 21. ledna 2004 - Revize: 5.3
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Klíčová slova: 
kbmt kbappdev kbhttpruntime kbinfo kbstate KB312607 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:312607

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com