ASP.NET Application & PAGE κύκλος ζωής
⚡ Έξυπνη Σύνοψη
Ο Κύκλος Ζωής Εφαρμογών και Σελίδας ASP.NET περιγράφει τα διατεταγμένα στάδια από τα οποία περνάει ένα αίτημα, από την εκκίνηση της εφαρμογής και τη δημιουργία αντικειμένου έως την αρχικοποίηση σελίδας, τη φόρτωση, την απόδοση και την εκφόρτωση.ping Οι προγραμματιστές τοποθετούν τον κώδικα στο σωστό σημείο.

Τι είναι το ASP.Net Lifecycle;
Όταν εκκινείται μια εφαρμογή ASP.Net, υπάρχει μια σειρά βημάτων που εκτελούνται. Αυτά τα βήματα αποτελούν τον κύκλο ζωής της εφαρμογής.
Ας δούμε τα διάφορα στάδια ενός τυπικού κύκλου ζωής μιας διαδικτυακής εφαρμογής ASP.Net.
Κύκλος ζωής ASP.Net
1) Έναρξη εφαρμογής – Ο κύκλος ζωής ενός ASP.NET Η εφαρμογή ξεκινά όταν υποβάλλεται ένα αίτημα από έναν χρήστη. Αυτό το αίτημα απευθύνεται στον διακομιστή ιστού για την εφαρμογή ASP.Net. Αυτό συμβαίνει όταν ο πρώτος χρήστης συνήθως μεταβαίνει στην αρχική σελίδα της εφαρμογής για πρώτη φορά. Κατά τη διάρκεια αυτής της περιόδου, υπάρχει μια μέθοδος που ονομάζεται Application_Start η οποία εκτελείται από τον διακομιστή ιστού. Συνήθως, σε αυτήν τη μέθοδο, όλες οι καθολικές μεταβλητές ορίζονται στις προεπιλεγμένες τιμές τους.
2) Δημιουργία αντικειμένου – Το επόμενο στάδιο είναι η δημιουργία των HttpContext, HttpRequest και HttpResponse από τον διακομιστή ιστού. Το HttpContext είναι απλώς το κοντέινερ για τα αντικείμενα HttpRequest και HttpResponse. Το αντικείμενο HttpRequest περιέχει πληροφορίες σχετικά με το τρέχον αίτημα, συμπεριλαμβανομένων των cookies και των πληροφοριών του προγράμματος περιήγησης. Το αντικείμενο HttpResponse περιέχει την απόκριση που αποστέλλεται στον πελάτη.
3) Δημιουργία εφαρμογής Http – Αυτό το αντικείμενο δημιουργείται από τον διακομιστή ιστού. Αυτό το αντικείμενο χρησιμοποιείται για την επεξεργασία κάθε επόμενου αιτήματος που αποστέλλεται στην εφαρμογή. Για παράδειγμα, ας υποθέσουμε ότι έχουμε 2 εφαρμογές ιστού: η μία είναι ένα κατάστημαping εφαρμογή καλαθιού αγορών και η άλλη είναι ένας ιστότοπος ειδήσεων. Για κάθε εφαρμογή, θα δημιουργούσαμε 2 αντικείμενα HttpApplication. Οποιαδήποτε περαιτέρω αιτήματα σε κάθε ιστότοπο θα υποβάλλονταν σε επεξεργασία από κάθε HttpApplication αντίστοιχα.
4) Απορρίψτε – Αυτό το συμβάν καλείται πριν καταστραφεί η παρουσία της εφαρμογής. Κατά τη διάρκεια αυτής της περιόδου, μπορεί κανείς να χρησιμοποιήσει αυτήν τη μέθοδο για να απελευθερώσει με μη αυτόματο τρόπο τυχόν μη διαχειριζόμενους πόρους.
5) Τέλος εφαρμογής – Αυτό είναι το τελευταίο μέρος της εφαρμογής. Σε αυτό το μέρος, η εφαρμογή ξεφορτώνεται τελικά από τη μνήμη.
Τι είναι ο κύκλος ζωής της σελίδας ASP.Net;
Όταν καλείται μια σελίδα ASP.Net, αυτή περνάει από έναν συγκεκριμένο κύκλο ζωής. Αυτό γίνεται πριν σταλεί η απάντηση στον χρήστη. Υπάρχει μια σειρά από βήματα που ακολουθούνται για την επεξεργασία μιας σελίδας ASP.Net.
Ας δούμε τα διάφορα στάδια του κύκλου ζωής μιας ιστοσελίδας ASP.Net.
Κύκλος ζωής σελίδας ASP.Net
- Αίτημα σελίδας – Αυτή είναι η στιγμή που η σελίδα ζητείται για πρώτη φορά από τον διακομιστή. Όταν ζητείται η σελίδα, ο διακομιστής ελέγχει αν ζητείται για πρώτη φορά. Εάν ναι, τότε πρέπει να μεταγλωττίσει τη σελίδα, να αναλύσει την απόκριση και να την στείλει στον χρήστη. Εάν δεν είναι η πρώτη φορά που ζητείται η σελίδα, ελέγχεται η προσωρινή μνήμη για να διαπιστωθεί εάν υπάρχει η έξοδος της σελίδας. Εάν ναι, η απόκριση αυτή αποστέλλεται στον χρήστη.
- Έναρξη σελίδας – Κατά τη διάρκεια αυτού του χρόνου, δημιουργούνται 2 αντικείμενα, γνωστά ως αντικείμενα Request και Response. Το αντικείμενο Request χρησιμοποιείται για να διατηρεί όλες τις πληροφορίες που στάλθηκαν όταν ζητήθηκε η σελίδα. Το αντικείμενο Response χρησιμοποιείται για να διατηρεί τις πληροφορίες που αποστέλλονται πίσω στον χρήστη.
- Αρχικοποίηση σελίδας – Κατά τη διάρκεια αυτού του χρόνου, όλα τα στοιχεία ελέγχου σε μια ιστοσελίδα αρχικοποιούνται. Έτσι, εάν έχετε οποιαδήποτε ετικέτα, πλαίσιο κειμένου ή οποιαδήποτε άλλα στοιχεία ελέγχου στη φόρμα ιστού, όλα αρχικοποιούνται.
- Φόρτωση σελίδας – Αυτό συμβαίνει όταν η σελίδα φορτώνεται πραγματικά με όλες τις προεπιλεγμένες τιμές. Επομένως, εάν ένα πλαίσιο κειμένου υποτίθεται ότι έχει μια προεπιλεγμένη τιμή, αυτή η τιμή φορτώνεται κατά τη φόρτωση της σελίδας.
- Επικύρωση – Μερικές φορές μπορεί να υπάρχει κάποιο σύνολο επικύρωσης στη φόρμα. Για παράδειγμα, μπορεί να υπάρχει μια επικύρωση που λέει ότι ένα πλαίσιο λίστας πρέπει να έχει ένα συγκεκριμένο σύνολο τιμών. Εάν η συνθήκη είναι ψευδής, τότε θα πρέπει να υπάρχει σφάλμα κατά τη φόρτωση της σελίδας.
- Αντιμετώπιση συμβάντων μετά την επιστροφή – Αυτό το συμβάν ενεργοποιείται εάν η ίδια σελίδα φορτώνεται ξανά. Αυτό συμβαίνει ως απόκριση σε ένα προηγούμενο συμβάν. Μερικές φορές μπορεί να υπάρξει μια κατάσταση όπου ένας χρήστης κάνει κλικ σε ένα κουμπί υποβολής στη σελίδα. Σε αυτήν την περίπτωση, η ίδια σελίδα εμφανίζεται ξανά και καλείται ο χειριστής συμβάντων Postback.
- Απόδοση σελίδας – Αυτό συμβαίνει ακριβώς πριν αποσταλούν όλες οι πληροφορίες απόκρισης στον χρήστη. Όλες οι πληροφορίες στη φόρμα αποθηκεύονται και το αποτέλεσμα αποστέλλεται στον χρήστη ως πλήρης ιστοσελίδα.
- Ξεφορτώνω – Μόλις σταλεί η έξοδος της σελίδας στον χρήστη, δεν χρειάζεται να τη διατηρήσετε Φόρμα web ASP.net αντικείμενα στη μνήμη. Έτσι, η διαδικασία εκφόρτωσης περιλαμβάνει την αφαίρεση όλων των ανεπιθύμητων αντικειμένων από τη μνήμη.
Συμβάντα κύκλου ζωής σελίδας ASP.NET
Πέρα από τα γενικά στάδια που αναφέρθηκαν παραπάνω, το ASP.NET δημιουργεί μια συγκεκριμένη ακολουθία συμβάντων σελίδας που οι προγραμματιστές μπορούν να χειριστούν στον κώδικα. Η γνώση της σειράς σάς βοηθά να τοποθετήσετε τη λογική εκεί που λειτουργεί σωστά:
- Προαρχικοποίηση – ορίστε κύριες σελίδες και θέματα και δημιουργήστε δυναμικά στοιχεία ελέγχου.
- Μέσα σε αυτό – κάθε στοιχείο ελέγχου αρχικοποιείται· χρησιμοποιήστε το για να διαβάσετε ή να ορίσετε ιδιότητες στοιχείου ελέγχου.
- InitComplete – αυξάνεται μετά την ολοκλήρωση όλων των αρχικοποιήσεων.
- Προφόρτωση – εμφανίζεται πριν από τη φόρτωση της σελίδας, την κατάσταση προβολής και τα δεδομένα δημοσίευσης.
- Φορτίο – η σελίδα και τα στοιχεία ελέγχου της φορτώνονται· το μεγαλύτερο μέρος της λογικής της σελίδας τοποθετείται εδώ.
- Συμβάντα ελέγχου – αντιμετωπίζονται συμβάντα που αφορούν συγκεκριμένα στοιχεία ελέγχου, όπως ένα κλικ σε ένα κουμπί.
- Προαπόδοση – κάντε τις τελικές αλλαγές στη σελίδα ή στα στοιχεία ελέγχου πριν από την έξοδο.
- ΑποθήκευσηΚατάστασηΟλοκλήρωση – η κατάσταση προβολής αποθηκεύεται για όλα τα στοιχεία ελέγχου.
- Render – η σελίδα δημιουργεί την έξοδο HTML που αποστέλλεται στο πρόγραμμα περιήγησης.
- Ξεφορτώνω – εκτελείται καθαρισμός και τα αντικείμενα διαγράφονται από τη μνήμη.
Κύκλος Ζωής Εφαρμογής vs Κύκλος Ζωής Σελίδας
Ο κύκλος ζωής της εφαρμογής και ο κύκλος ζωής της σελίδας λειτουργούν σε διαφορετικά πεδία εφαρμογής. Ο παρακάτω πίνακας διευκρινίζει τις διαφορές τους:
| Άποψη | Κύκλος ζωής εφαρμογής | Κύκλος Ζωής Σελίδας |
|---|---|---|
| Scope | Ολόκληρη η διαδικτυακή εφαρμογή | Ένα αίτημα μίας σελίδας |
| Αρχίζει | Στο πρώτο αίτημα (Application_Start) | Κάθε φορά που ζητείται μια σελίδα |
| Σημαντικά γεγονότα | Έναρξη_Εφαρμογής, Έναρξη_Αίτησης, Τέλος_Εφαρμογής | Αρχικοποίηση, Φόρτωση, Προαπόδοση, Αφαίρεση φόρτωσης |
| Συχνότητα | Μία φορά ανά έναρξη και λήξη εφαρμογής | Μία φορά ανά αίτημα σελίδας |
Με λίγα λόγια, ο κύκλος ζωής της εφαρμογής καλύπτει ολόκληρη την εφαρμογή από την εκκίνηση έως τον τερματισμό της, ενώ ο κύκλος ζωής της σελίδας εκτελείται κάθε φορά που ένας χρήστης ζητά μια σελίδα.
Γιατί η κατανόηση του κύκλου ζωής του ASP.NET έχει σημασία
Η κατανόηση του κύκλου ζωής είναι απαραίτητη επειδή το ASP.NET εκτελεί τον κώδικά σας σε συγκεκριμένες στιγμές και η τοποθέτηση της λογικής σε λάθος συμβάν προκαλεί δυσεύρετα σφάλματα. Η σαφής κατανόηση της ακολουθίας σας βοηθά να:
- Δημιουργήστε ή ρυθμίστε δυναμικά στοιχεία ελέγχου νωρίς, στο PreInit ή στο Init.
- Ορίστε τις προεπιλεγμένες τιμές ελέγχου στο συμβάν Load, ώστε να αποδίδονται σωστά.
- Εφαρμογή των τελικών αλλαγών εμφάνισης στο PreRender, αφού συνδεθούν όλα τα δεδομένα.
- Διακρίνετε τα αιτήματα πρώτης φόρτωσης από τα αιτήματα επιστροφής δεδομένων (postbacks) για να αποφύγετε τη διπλή επεξεργασία δεδομένων.
- Απελευθερώστε πόρους και κάντε καθαρισμό στην επιλογή Unload για να αποτρέψετε διαρροές μνήμης.
Η διαχείριση αυτών των συμβάντων καθιστά τη διαχείριση κατάστασης, την επικύρωση και την αποσφαλμάτωση πολύ πιο προβλέψιμη.


