ASP.NET Application & PAGE Life Cycle

โšก Smart sammanfattning

ASP.NET Application and Page Life Cycle beskriver de ordnade stegen som en begรคran gรฅr igenom, frรฅn programstart och objektskapande till sidans initialisering, laddning, rendering och urladdning.ping utvecklare placerar kod pรฅ rรคtt plats.

  • ๐Ÿš€ Ansรถkningsstart: Applikationens livscykel bรถrjar nรคr den fรถrsta begรคran utlรถser Application_Start.
  • ๐Ÿ“ฆ Skapande av objekt: Servern skapar HttpContext-, HttpRequest- och HttpResponse-objekt fรถr varje begรคran.
  • ๐Ÿ“„ Sidsteg: En sida gรฅr igenom begรคran, start, initialisering, laddning, validering, postback, rendering och laddning.
  • โšก Sidhรคndelser: Hรคndelsemetoder som Init, Load, PreRender och Unload lรฅter utvecklare koppla in sig i varje steg.
  • ๐Ÿง  Korrekt placering: Att kรคnna till livscykeln hjรคlper dig att stรคlla in kontrollvรคrden, hantera tillstรฅnd och undvika buggar.

ASP.NET-applikation och sidlivscykel

Vad รคr ASP.Net Lifecycle?

Nรคr en ASP.Net-applikation startas utfรถrs en serie steg. Dessa steg utgรถr applikationens livscykel.

Lรฅt oss titta pรฅ de olika stegen i en typisk livscykel fรถr en ASP.Net-webbapplikation.

ASP.Net livscykel

ASP.Net livscykel

1) Applikationsstart โ€“ Livscykeln fรถr en ASP.NET Applikationen startas nรคr en begรคran gรถrs av en anvรคndare. Denna begรคran gรฅr till webbservern fรถr ASP.Net-applikationen. Detta hรคnder nรคr den fรถrsta anvรคndaren normalt gรฅr till applikationens hemsida fรถr fรถrsta gรฅngen. Under denna tid finns det en metod som heter Application_Start som kรถrs av webbservern. Vanligtvis, i denna metod, sรคtts alla globala variabler till sina standardvรคrden.

2) Objektskapande โ€“ Nรคsta steg รคr att webbservern skapar HttpContext, HttpRequest och HttpResponse. HttpContext รคr bara behรฅllaren fรถr HttpRequest- och HttpResponse-objekten. HttpRequest-objektet innehรฅller information om den aktuella begรคran, inklusive cookies och webblรคsarinformation. HttpResponse-objektet innehรฅller svaret som skickas till klienten.

3) HttpApplication skapande โ€“ Detta objekt skapas av webbservern. Det รคr detta objekt som anvรคnds fรถr att bearbeta varje efterfรถljande fรถrfrรฅgan som skickas till applikationen. Lรฅt oss till exempel anta att vi har tvรฅ webbapplikationer: en รคr en butikping varukorgsapplikation, och den andra รคr en nyhetswebbplats. Fรถr varje applikation skulle vi ha tvรฅ HttpApplication-objekt skapade. Alla ytterligare fรถrfrรฅgningar till varje webbplats skulle behandlas av respektive HttpApplication.

4) Kassera โ€“ Denna hรคndelse anropas innan applikationsinstansen fรถrstรถrs. Under denna tid kan man anvรคnda den hรคr metoden fรถr att manuellt frigรถra eventuella ohanterade resurser.

5) Ansรถkningsslut โ€“ Det hรคr รคr den sista delen av ansรถkan. I den hรคr delen laddas applikationen slutligen bort frรฅn minnet.

Vad รคr ASP.Net Page Lifecycle?

Nรคr en ASP.Net-sida anropas gรฅr den igenom en viss livscykel. Detta gรถrs innan svaret skickas till anvรคndaren. Det finns en serie steg som fรถljs fรถr bearbetningen av en ASP.Net-sida.

Lรฅt oss titta pรฅ de olika stadierna av livscykeln fรถr en ASP.Net-webbsida.

ASP.Net-sidans livscykel

ASP.Net-sidans livscykel

  1. Sidfรถrfrรฅgan โ€“ Det hรคr รคr nรคr sidan fรถrst begรคrs frรฅn servern. Nรคr sidan begรคrs kontrollerar servern om den begรคrs fรถr fรถrsta gรฅngen. Om sรฅ รคr fallet mรฅste den kompilera sidan, analysera svaret och skicka det till anvรคndaren. Om det inte รคr fรถrsta gรฅngen sidan begรคrs kontrolleras cachen fรถr att se om sidutgรฅngen finns. Om sรฅ รคr fallet skickas svaret till anvรคndaren.
  2. Sidstart โ€“ Under denna tid skapas tvรฅ objekt, sรฅ kallade Request- och Response-objekt. Request-objektet anvรคnds fรถr att lagra all information som skickades nรคr sidan begรคrdes. Response-objektet anvรคnds fรถr att lagra informationen som skickas tillbaka till anvรคndaren.
  3. Sidinitiering โ€“ Under den hรคr tiden initieras alla kontroller pรฅ en webbsida. Sรฅ om du har nรฅgon etikett, textruta eller andra kontroller pรฅ webbformulรคret, initieras de alla.
  4. Sidladdning โ€“ Det รคr dรฅ sidan faktiskt laddas med alla standardvรคrden. Sรฅ om en textruta ska ha ett standardvรคrde, laddas det vรคrdet under sidans laddningstid.
  5. Validering โ€“ Ibland kan det finnas nรฅgon valideringsuppsรคttning pรฅ formulรคret. Det kan till exempel finnas en validering som sรคger att en listbox ska ha en viss uppsรคttning vรคrden. Om villkoret รคr falskt bรถr det finnas ett fel nรคr sidan laddas.
  6. Postback-hรคndelsehantering โ€“ Denna hรคndelse utlรถses om samma sida laddas igen. Detta hรคnder som svar pรฅ en tidigare hรคndelse. Ibland kan det uppstรฅ en situation dรคr en anvรคndare klickar pรฅ en skicka-knapp pรฅ sidan. I det hรคr fallet visas samma sida igen och hรคndelsehanteraren fรถr Postback anropas.
  7. Sidรฅtergivning โ€“ Det hรคr hรคnder precis innan all svarsinformation skickas till anvรคndaren. All information i formulรคret sparas och resultatet skickas till anvรคndaren som en komplett webbsida.
  8. Lasta av โ€“ Nรคr sidutgรฅngen vรคl har skickats till anvรคndaren finns det ingen anledning att behรฅlla ASP.net webbformulรคr fรถremรฅl i minnet. Sรฅ avlastningsprocessen innebรคr att alla oรถnskade objekt tas bort frรฅn minnet.

ASP.NET-sidlivscykelhรคndelser

Utรถver de breda stegen ovan genererar ASP.NET en specifik sekvens av sidhรคndelser som utvecklare kan hantera i kod. Att kรคnna till ordningen hjรคlper dig att placera logiken dรคr den fungerar korrekt:

  • Fรถrinitiering โ€“ ange mallsidor och teman och skapa dynamiska kontroller.
  • I det โ€“ varje kontroll initieras; anvรคnd den fรถr att lรคsa eller stรคlla in kontrollegenskaper.
  • InitComplete โ€“ uppstรฅr efter att all initialisering รคr klar.
  • Fรถrladdning โ€“ intrรคffar innan sidan laddas visningsstatus och postback-data.
  • Ladda โ€“ sidan och dess kontroller laddas; det mesta av sidans logik placeras hรคr.
  • Kontrollhรคndelser โ€“ kontrollspecifika hรคndelser som knappklick hanteras.
  • Fรถrrendering โ€“ gรถr de sista รคndringarna pรฅ sidan eller i kontrollerna innan utdata.
  • SparaTillstรฅndSlutfรถrt โ€“ vystatus sparas fรถr alla kontroller.
  • render โ€“ sidan genererar HTML-utdata som skickas till webblรคsaren.
  • Lasta av โ€“ rensning utfรถrs och objekt frigรถrs frรฅn minnet.

Applikationslivscykel kontra sidlivscykel

Applikationens livscykel och sidlivscykeln fungerar inom olika omfรฅng. Tabellen nedan fรถrtydligar hur de skiljer sig รฅt:

Aspect Ansรถknings livscykel Sidans livscykel
Omfattning Hela webbapplikationen En begรคran om en enda sida
Bรถrjar Pรฅ den fรถrsta begรคran (Application_Start) Varje gรฅng en sida begรคrs
Nyckelhรคndelser Applikationsstart, BรถrjaBegรคran, Applikationsslut Initiera, ladda, fรถrrendera, avlasta
Frekvens En gรฅng per ansรถkan, start och slut Begรคran en gรฅng per sida

Kort sagt omfattar applikationens livscykel hela appen frรฅn start till avstรคngning, medan sidlivscykeln kรถrs varje gรฅng en anvรคndare begรคr en sida.

Varfรถr det รคr viktigt att fรถrstรฅ ASP.NETs livscykel

Att fรถrstรฅ livscykeln รคr viktigt eftersom ASP.NET kรถr din kod vid specifika tillfรคllen, och att placera logik i fel hรคndelse orsakar svรฅrfunna buggar. En tydlig fรถrstรฅelse fรถr sekvensen hjรคlper dig att:

  • Skapa eller konfigurera dynamiska kontroller tidigt, i PreInit eller Init.
  • Ange standardvรคrden fรถr kontroll i Load-hรคndelsen sรฅ att de renderas korrekt.
  • Tillรคmpa de slutliga visningsรคndringarna i PreRender, efter att all data har bundits.
  • Skilj รฅt fรถrfrรฅgningar vid fรถrsta inlรคsningen frรฅn รฅterpostningar fรถr att undvika att data behandlas tvรฅ gรฅnger.
  • Frigรถr resurser och rensa upp i Unload fรถr att fรถrhindra minneslรคckor.

Att bemรคstra dessa hรคndelser gรถr tillstรฅndshantering, validering och felsรถkning mycket mer fรถrutsรคgbar.

Vanliga frรฅgor

Ja. AI-assistenter kan fรถrklara varje steg och hรคndelse, trace hur en exempelfรถrfrรฅgan gรฅr frรฅn Init till Unload och besvara fรถljdfrรฅgor. Detta gรถr livscykeln lรคttare att lรคra sig, men du bรถr bekrรคfta detaljer mot officiell dokumentation.

AI-verktyg kan lรคsa din kod och stack tracfรถr att fรถreslรฅ vilken hรคndelse en bugg hรถr hemma i, till exempel kontrollvรคrden som รฅterstรคllts eftersom de stรคlldes in fรถre laddning. Utvecklare bรถr fortfarande verifiera korrigeringar genom att testa sidans faktiska beteende.

Init kรถrs fรถrst och initierar varje kontroll, men view state รคr รคnnu inte tillgรคngligt. Load kรถrs senare, efter att view state och postback-data har รฅterstรคllts, sรฅ de flesta datadrivna logik- och kontrollvรคrden hรถr hemma i Load-hรคndelsen.

Kontrollera egenskapen IsPostBack. Nรคr den รคr falsk laddas sidan fรถr fรถrsta gรฅngen, sรฅ du initierar kontroller. Nรคr den รคr sann รคr begรคran en postback och du hoppar รถver ominitieringen fรถr att bevara anvรคndarinmatningen.

Sammanfatta detta inlรคgg med: