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