Gdy rozważamy aplikację desktopową, to sytuacja jest bardzo prosta. Pracujemy w ramach konkretnego procesu, który ma swoją przestrzeń w pamięci, oraz dysponujemy systemem plików pozwalającym na przechowywanie wszystkich parametrów programu. Sprawa zaczyna się komplikować, kiedy zaczynamy rozmawiać o aplikacji WWW, która de facto działa po stronie serwera, a to, co widzimy na ekranie, jest efektem przetworzenia danych właśnie po stronie serwera. Jakie mechanizmy są nam zatem w stanie pomóc opracować program, który potrafiłby zapamiętać swój stan i mógłby przechowywane dane używać w dowolnym momencie cyklu swojego życia? Przypomnijmy, że niniejszy tekst jest trzecim w cyklu artykułów poświęconych programowaniu w ASP.NET. Dotychczas opublikowaliśmy teksty „Praca z kontrolkami w Visual Web Developer 2005 Express Edition” i „Zrozumieć Eventy i PostBacki w ASP.NET 2.0”.
ASP.NET i stan, czyli jak to działa
Każdy obiekt, który jest reprezentowany przez dowolną stronę WWW, istnieje tylko w momencie, gdy klient – w wyniku swojego zapytania – dostanie odpowiedź z serwera, po czym jest automatycznie i natychmiastowo niszczony. Jak w takim razie zapamiętywać stan aplikacji w tak ulotnym środowisku? ASP.NET daje nam wiele mechanizmów, które pozwalają na przechowywanie stanów aplikacji. Mamy możliwość zapamiętania pojedynczych wartości liczbowych, tekstowych oraz całych obiektów, by możliwe było przenoszenie tych wartości pomiędzy poszczególnymi stronami aplikacji lub wręcz pomiędzy odwołaniami do różnych witryn. Ilustrującym to przykładem jest np. stworzenie spersonalizowanego wyglądu jakiegoś portalu.
Co nam daje zapamiętanie stanu obiektów czy też całego programu? Dzięki temu mamy możliwość przechowania parametrów zdefiniowanych przez użytkownika bez konieczności ciągłego logowania się do każdej strony czy też zapamiętania parametrów wywołań kolejnych podstron. Istnieje kilka terminów, które określają stan aplikacji: są to m.in. pliki cookies (zwane popularnie ciasteczkami), ViewState czy też sesja i obiekt Session.
Aby zrozumieć zasadę działania poszczególnych metod, konieczne jest zapoznanie się z cyklem życia aplikacji WWW. Program „żyje” tak długo, dopóki istnieją aktywne sesje w jego obrębie. Co to dokładnie oznacza? Wszystko rozpoczyna się w momencie uruchomiania naszej witryny. Użytkownik wpisuje w przeglądarce adres URL i wysyła tym samym żądanie do serwera WWW. Wynik w postaci strony internetowej jest wysyłany do użytkownika i wyświetlany w przeglądarce. W tym czasie na serwerze tworzone są obiekty, umieszczane następnie na naszej witrynie. Kiedy obiekt zostanie utworzony według zadanych kryteriów i umieszczony na stronie, jest niszczony po stronie serwera. Oczywiście aplikacja nie kończy swojego życia, ponieważ użytkownik ma cały czas aktywną sesję na serwerze, ale gubimy już pewne informacje (w szczególności dane o kontrolce). Gdy program nie będzie aktywny, to po określonym czasie sesja wygasa i tym samym zupełnie tracimy informacje o aplikacji.
Zapamiętanie stanu aplikacji
W tym miejscu przechodzimy do sedna tematu, czyli informacji o mechanizmach zapamiętania stanu aplikacji oraz sposobach ich wykorzystania. Przedstawiamy listę metod przechowywania stanu oraz ich zastosowania (dane zebraliśmy w Tabeli 1), w artykule zajmiemy się natomiast trzema najbardziej popularnymi mechanizmami: obiektem Session, Cookies i ViewState.
|
Mechanizm |
Czas życia |
|---|---|
| Obiekt Session: In-process | Sesja |
| Obiekt Session: State server | Sesja |
| Obiekt Session: SQL Server | Sesja |
| Cookies |
Trwałe Sesja Okres w czasie |
| Ukryte pole formularza | Komunikat |
| Parametry wywołania strony | Komunikat |
| ViewState | Komunikat |
| Obiekt Application | Proces |
| Database | Kontrolowane przez aplikację |
Ładowanie




Browser:
Browser:
Browser: Opera/9.63 (Windows NT 6.0; U; pl) Presto/2.1.1