Zarządzanie stanem aplikacji Mechanizm Sesji

1 Zarządzanie stanem aplikacji Mechanizm Sesji Aplikacje ...
Author: Lubomierz Zaborowski
0 downloads 0 Views

1 Zarządzanie stanem aplikacji Mechanizm Sesji Aplikacje sieciowe Zarządzanie stanem aplikacji Mechanizm Sesji Zmienne Application i Session

2 Sposoby wymiany informacji miedzy poszczególnymi żądaniamiParametry żądania (ograniczenia związane z bezpieczeństwem i ilością przesyłanych informacji Cokies Stan Strony (ViewState) Stan aplikacji (zmienna Application) Stan sesji (zmienna Session)

3 Konfiguracja na poziomie strony Konfiguracja na poziomie kontrolkiViewState Wykorzystywane do zapamiętania stanu kontrolek pomiędzy kolejnymi wywołaniami strony Konfiguracja na poziomie strony Konfiguracja na poziomie kontrolki Page Language="C#" ... CodeFile="Default2.aspx.cs" ..." EnableViewState="True" %>

4 ViewState cd. Property ViewStateWłaściwość obiektu (kontrolki) Wykorzystanie w funkcjach składowych protected virtual StateBag ViewState { get; } this.ViewState["Text"]; this.ViewState["Text"] = value;

5 Dostępna dla konkretnego użytkownika Sesja Dostępna dla konkretnego użytkownika Tworzona przy pierwszym żądaniu użytkownika Pomiędzy stronami przesyłany jest identyfikator sesji Stan sesji pamiętany jest na serwerze 1) w procesie serwera, 2) w zewnętrznym procesie, 3) w bazie danych MS SQL, 4) z wykorzystaniem własnej implementacji dziedzicząc od klasy: SessionStateStoreProviderBase.

6 Domyślnie trzymany w cookie Konfiguracja w pliku web.configIdentyfikator sesji Domyślnie trzymany w cookie Konfiguracja w pliku web.config Implementacja sesji bez cookie regenerateExpiredSessionId="true" />

7 Konfiguracja trybu pracy mechanizmu sesjiInState – w pamięci serwera web StateServer – w zewnętrnym procesie SQLServer – serwer MS SQL Custom – własna implementacja Off – wyłączenie mechanizmu sesji cookieless="false" timeout="20"/>

8 Wprowadzanie informacji Session[”NAZWA”] = Wartosc; Zmienna Session Wprowadzanie informacji Session[”NAZWA”] = Wartosc; Odczyt informacji zmienna = (TYP) Session[”NAZWA”] ; Przykład: Session[”Komunikat”] = ”Brak danych”; String s= (String) Session[”Komunikat”] ;

9 Stan aplikacji Dostępny dla wszystkich użytkowników, Szybki dostęp do zmiennych trzymanych w pamięci procesu aplikacji, Wrażliwy na restart aplikacji (np. Przy zmianie pliku web.config), Nie jest współdzielony pomiędzy różnymi instancjami aplikacji (w przypadku farmy serwerów, czy kolejnych instacji na jednym serwerze), Może być wykorzystywany przez wiele wątków aplikacji. Należy stosować metody Lock i UnLock.

10 Wykorzystanie zmiennej ApplicationZapis: Odczyt: Application["Message"] = "Welcome to the Contoso site."; Application["PageRequestCount"] = 0; Application.Lock(); Application["PageRequestCount"] = ((int)Application["PageRequestCount"])+1; Application.UnLock(); if (Application["AppStartTime"] != null) { DateTime myAppStartTime = (DateTime)Application["AppStartTime"]; }

11 Session_OnEnd (działa w trybie InProc)Zdarzenia Session_OnStart Session_OnEnd (działa w trybie InProc) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/427783/1/images/11/Session_OnEnd+%28dzia%C5%82a+w+trybie+InProc%29.jpg", "name": "Session_OnEnd (działa w trybie InProc)", "description": "Zdarzenia. Session_OnStart. Session_OnEnd (działa w trybie InProc) public void Application_OnStart() { Application[ UsersOnline ] = 0; } public void Session_OnStart() { Application.Lock(); Application[ UsersOnline ] = (int)Application[ UsersOnline ] + 1; Application.UnLock(); public void Session_OnEnd() { Application[ UsersOnline ] = (int)Application[ UsersOnline ] - 1; ", "width": "800" }