Jaka jest różnica między SessionState i ViewState?

117

Jaka jest różnica między SessionState i ViewState w ASP.NET?

Sód
źródło
7
Próbowałem Google, ale nie mogłem znaleźć przeglądu.
Natrium

Odpowiedzi:

143

Stan sesji zawiera informacje dotyczące określonej sesji (określonego klienta / przeglądarki / komputera) z serwerem. Jest to sposób na śledzenie tego, co użytkownik robi w witrynie… na wielu stronach … pośród bezpaństwowości sieci. np. zawartość koszyka konkretnego użytkownika to dane sesji. Pliki cookie mogą być używane do określania stanu sesji. Z drugiej strony
View State to informacje specyficzne dla określonej strony internetowej. Jest przechowywany w ukrytym polu, dzięki czemu nie jest widoczny dla użytkownika. Służy do utrzymania złudzenia użytkownika, że ​​strona pamięta to, co zrobił na niej ostatnim razem - nie dawaj mu czystej strony za każdym razem, gdy odsyła. Sprawdź tę stronę, aby uzyskać więcej informacji .

Gishu
źródło
96

Stan sesji jest zapisywany na serwerze, a ViewState na stronie.

Stan sesji jest zwykle usuwany po okresie bezczynności użytkownika (nie wystąpiło żadne żądanie zawierające identyfikator sesji w żądaniu plików cookie).

Stan widoku jest publikowany w kolejnym wpisie z powrotem w ukrytym polu.

thinkbeforecoding
źródło
30
+1 Tak - ważny punkt, że ViewState przemieszcza się w górę iw dół między klientem a serwerem, ale SessionState pozostaje na serwerze.
Gordon Mackie JoanMiro
1
To powinna być oficjalna odpowiedź
Fandango68
33

SessionState

  • Może być utrwalony w pamięci, co czyni go szybkim rozwiązaniem. Co oznacza, że ​​stan nie może być udostępniany w farmie internetowej / ogrodzie sieciowym.
  • Może być utrwalony w bazie danych, przydatny w farmach internetowych / ogrodach internetowych.
  • Czyści się, gdy sesja kończy się - zwykle po 20 minutach bezczynności.

ViewState

  • Jest przesyłany tam iz powrotem między serwerem a klientem, zajmując przepustowość.
  • Nie ma daty ważności.
  • Jest przydatny w farmie sieciowej / ogrodzie sieciowym
Jesper Fyhr Knudsen
źródło
14

Użycie: Jeśli zamierzasz przechowywać informacje, do których chcesz uzyskać dostęp na różnych stronach internetowych, możesz użyć SessionState

Jeśli chcesz przechowywać informacje, do których chcesz uzyskać dostęp z tej samej strony, możesz użyć Viewstate

Przechowywanie Stan widoku jest przechowywany na samej stronie (w postaci zaszyfrowanego tekstu), podczas gdy stan sesji jest przechowywany na serwerze.

SessionState zostanie wyczyszczone w następujących warunkach

  1. Oczyszczone przez programistę
  2. Wyczyszczone przez użytkownika
  3. Koniec czasu
Cyril Gupta
źródło
5
ViewStates nie są szyfrowane. Po prostu wyglądają w ten sposób, ale można je łatwo rozszyfrować.
Vandel212,
5

Sesja służy głównie do przechowywania danych dotyczących użytkownika [danych sesji]. W przypadku sesji możesz używać wartości przez całą sesję do czasu wygaśnięcia sesji lub rezygnacji z niej przez użytkownika. Stan widoku to typ danych, który ma zakres tylko na stronie, na której jest używany. Nie możesz udostępniać wartości stanu widoku na innych stronach, chyba że przeniesiesz te wartości na żądaną stronę. Również w przypadku stanu widoku wszystkie dane kontroli po stronie serwera są przesyłane do serwera jako para klucz-wartość w __Viewstate i przesyłane z powrotem i renderowane do odpowiedniego elementu sterującego w kliencie, gdy następuje ogłaszanie zwrotne.

rahul
źródło