ASP.NET Page Life Cycle - Part II

Συνεχίζοντας λοιπόν αυτό το post πάμε να δούμε το Life - Cycle μιας σελίδας.

  1. Το request έρχεται από τον browser.
  2. Ο IIS αντιστοιχεί την επέκταση του αρχείου που ζητείται στο aspnet_isapi.dll. (IIS 6.0 και κάτω).
  3. Το aspnet_isapi.dll προωθεί το request στον ASP.NET worker process.
  4. Το ISAPI φορτώνει το HTTPRuntime και του περνάει το request. Το HTTP Pipelining ξεκινάει.
  5. To HTTPRuntime χρησιμοποιεί το HTTPApplicationFactory για να δημιουργήσει ή να επαναχρησιμοποιήσει ένα αντικείμενο τύπου HTTPApplication.
  6. To HTTPRuntime δημιουργεί το HTTPContext για το συγκεκριμένο request. Το HTTPContext εσωτερικά διατηρεί τις μεταβλητές HTTPRequest και HTTPResponse.
  7. To HTTPRuntime αντιστοιχίζει επίσης το HTTPContext στο HTTPApplication που κάνει handle τα application level events.
  8. To HTTPApplication τρέχει τα HTTPModules για το request της σελίδας.
  9. To HTTPApplication δημιουργεί HTTPHandler για το request της σελίδας. Αυτό ειναι και το τελευταίο στάδιο του HTTP Pipelining.
  10. Οι HTTPHandlers είναι υπεύθυνοι για να επεξεργστούν τα request και να δημιουργήσουν το αντίστοιχο response context.
  11. Οταν το request φύγει από το HTTPPipeline ξεκινάνε τα page level events.
  12. Τα Page Level Events είναι με σειρά "εμφάνισης" : PreInit, Init, InitComplete, PreLoad, Load, Control Events (Postback Events), Load Complete, PreRender, SaveStateComplete, Render, Unload.
  13. O HTTPHandler δημιουργεί το response μαζί με τα παραπάνω events και το στέλνει πίσω στον IIS ο οποίος με τη σειρά του στέλνει την απάντηση στον client.

Παρακάτω ακολουθούν και μερικές βοηθητικές εικόνες.

Page_Life_cycle HTTP_Pipeline

Στο τελευταίο post αυτής της σειράς θα αναφερθώ στα events του Life-Cycle μιας σελίδας.

Share/Bookmark
Published Τετάρτη, 7 Μαΐου 2008 7:45 μμ by djsolid

Comments

# ASP.NET Page Life Cycle - Part III

Τρίτο και τελευταίο post σχετικά με τον κύκλο ζωής μια σελίδας στην ASP.NET. Τα δύο προηγούμενα μπορείτε

Τετάρτη, 7 Μαΐου 2008 8:56 μμ by ASP.net

Leave a Comment

(required) 
(required) 
(optional)
(required) 
Submit