Dzisiejszy wpis będzie dotyczył oczywistej oczywistości. Ale czy na pewno? Zostałem kiedyś zapytany na jednej z pierwszych rozmów o pracę, żeby wymienić jak najwięcej zdarzeń związanych z cyklem życia strony. Pierwszymi (i niestety jedynymi), które przyszły mi do głowy były:
– page_init
– page_load
– page_render
– page_unload
A co z pozostałymi zdarzeniami? No właśnie. Zdziwiło mnie, gdy zostałem poinformowany, że moja odpowiedź nie była najgorsza – naprawdę myślałem, że to pytanie poszło mi fatalnie. Po tej rozmowie obiecałem sobie, że dokładnie przeanalizuję cykl życia strony i wbiję to sobie do tej głupiej głowy na zawsze.
Jak to wygląda? Zaczynajmy (po kolei):
1) Zaczynamy od requesta i inicjalizacji kontrolek (domyślne wartości) przy zdarzeniu Page_Init.
2) Następnie opcjonalnie LoadViewState (jeśli została odesłana przez serwer) przywraca stan widoku (stan kontrolek) wczytywanej strony.3) LoadPostBackData przetwarza kontrolki serwerowe wypełnione wcześniej wysłanymi danymi.
4) Page_Load umożliwia wypełnienie kontrolek danymi z różnych źródeł (np. DB).
5) Jeżeli wystąpił postback, wywoływane są dwa zdarzenia – RaisePostDataChangedEvent oraz RaisePostBackEvent
6) Wywoływane jest zdarzenie Page_Prerender, które umożliwia modyfikację wypełnionych kontrolek przed wyświetleniem.
7) Kolejno SaveViewState zapisuje stan widoku strony.
8) Następnie Page_Render tworzy obiekt Response i wyświetla stronę.
9) Ostatecznie Page_Unload usuwa stronę z pamięci i wysyła Response do przeglądarki.
Mam nadzieję, że ten wpis się komuś przyda podczas przyszłych rozmów kwalifikacyjnych 🙂
Lata pracy w WebForms i nigdy tego nie zapamiętałem. Tzn., że nie jest to potrzebne. Można sprawdzić w trakcie pisania czegoś i nie zaśmiecać sobie głowy. To, że tak trudno to zapamiętać dowodzi moim zdaniem jednego – przekombinowane! 🙂
Przekombinowane, czy nie, ale mogą nas zagiąć takim pytaniem na rozmowie – podobno mój przypadek nie jest odosobniony 😉
A gdzie Page_PreInit? 🙂
Dzięki, Ile razy poległem na tym pytaniu 🙂
Proszę bardzo 😉
Uciekać jak najdalej od firmy, które zadaje takie pytania na rozmowie rekrutacyjnej.
Najśmieszniejsze jest to, że potem człowiek przychodzi do takiej firmy, a 90% ludzi pracujących jako programiści nie ma o tym zielonego pojęcia 😉
Nie wiem czy złapałem o co Ci chodzi, ale ja staram się unikać firm, które jeszcze coś robią na WebFormsach
Złapałeś, ta sytuacja miała miejsce podczas moich pierwszych rozmów o pracę – było mi wtedy obojętne co, gdzie i jak, byle .NET. Jednak przekrój pytań podczas rozmów rekrutacyjnych związanych z web’em do tej pory obfituje w takie smaczki w wielu firmach 😉
Powiem że nie wiem czy znajdziesz naprawdę duży projekt który jest webowy, jest robiony w .Net a nie jest w WebFormsach. MVC mimo tych kilku lat jest jeszcze młode, pierwsze wersje też nie od razu zdobyły zaufanie korporacji. Nowe rzeczy robi się w MVC ale istnieje cała masa już działających rozwiązań które dalej wymagają rozwoju i jeszcze bardzo długo będą potrzebni specjaliści w tych technologiach. A sam cykl życia strony też nigdy się go nie nauczyłem.