Zarządzanie stanem w aplikacjach ASP.NET Elżbieta Mrówka-Matejewska
Techniki zarządzania stanem w ASP.NET Używanie stanu widoku ASP.NET Używanie stanu kontrolki ASP.NET Zdefiniowanie zmiennych aplikacji Zdefiniowanie zmiennych sesji Zdefiniowanie danych w plikach cookie
Mechanizmy pozwalające na zarządzanie stanem Po stronie Klienta: parametry wywołania pliki cookies Po stronie serwera stan strony (ViewState) stan sesji stan aplikacji
Stan aplikacji Współdzielenie informacji w całej aplikacji jest możliwe przy użyciu klasy HttpApplicationState. Klasa ta pozwala przechowywać zmienne w słowniku – kolekcji par klucz-wartość. Zmienne te są widoczne w obszarze całej aplikacji ASP.NET
Stan aplikacji Zasoby –stan aplikacji jest przechowy- wany w pamięci; mamy do niego szybki dostęp, ale nie można pamiętać zbyt dużo informacji Ulotność - jest usuwany z pamięci w momencie zatrzymania lub restartu aplikacji lub w momencie awarii serwera. Skalowalność - nie jest dzielony na serwery w farmie serwerów Współbieżność - konieczność zapewnienie mechanizmów bezpiecznej aktualizacji przechowywanych obiektów.
Stan aplikacji Tworzenie zmiennych stanu aplikacji jest możliwe poprzez obiekt Application np.: Application["info"] = "Witaj świecie"; Application["AppStartTime"] = DateTime.Now;
Stan aplikacji Pobranie wartości tak utworzonej zmiennej stanu aplikacji można zrealizować za pomocą następującej konstrukcji: string info = (string) Application["info"]; DateTime AppStartTime = (DateTime) Application["AppStartTime"];
Stan sesji Tworzenie zmiennych stanu sesji jest możliwe poprzez obiekt Session. Np.: Session["info"] = "Witaj świecie!"; Pobranie wartości tak utworzonej zmiennej stanu sesji : string info = (string) Session["info"]; Przechowywanie i pobieranie złożonych danych, tj. obiektów, wymaga rzutowania do odpowiedniego typu.
Stan sesji Standardowy czas życia - 20 min Ograniczenie czasu w metodzie ( plik Global.asax) Session_Start(…) { Session.Timeout=5; Session [”XX ”]=new(XX); }
Global Application Class Plik Global.asax umożliwia deklarowanie i zarządzanie zdarzeniami na poziomie aplikacji i sesji. Jest on umieszczony w głównym katalogu aplikacji. Podczas wykonywania plik jest parsowany i kompilowany w dynamiczną klasę dziedziczoną z klasy bazowej HttpApplication.
ViewState Ukryte pole formularza _ViewState, które przepływa między przeglądarką a określoną stroną zawierające zbiór par nazwa/wartość, które reprezentują wartości każdej kontrolki interfejsu użytkownika na danej stronie Odczytywane w czasie zdarzenia Init klasy bazowej System.Web.UI.Page
ViewState Własność EnableViewState każdej kontrolki określa, czy jej stan pomiędzy kolejnymi wy wołaniami strony (PostBack) ma zostać odtworzony, czy serwer ma ponownie go wygenerować
ViewState Do ukrytego pola _ViewState można dodać niestandardowe informacje np.: ViewState[”UkryteInfo”] = ”JakieśInfo”; …. Lbl1.Text = (string)ViewState[”UkryteInfo”] ;
Przykładowe zastosowanie: http://db-mssql/emrowka2/W9/Sesja_logowanie.aspx P:\emrowka\APBD Przykład Parametry Sesji i Aplikacji2014.docx