Play2 Framework - brak sesji. Dlaczego?

Play2 Framework - brak sesji. Dlaczego?
krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:1272
0

Hej.

Play2 ma podejście pełnej bezstanowości po stronie serwera, co wiąże się z brakiem sesji. Braki są trochę na siłę załatane podpisanym ciachem, czyli stanowość jednak jest, ale nie po stronie serwera.

I moje pytanie brzmi: Dlaczego zastosowali takie podejście? W czym jest ono lepsze od stosowania sesji?
Ja rozumiem że w http jest w założeniu bezstanowy, ale to było projektowane bardzo dawno temu. Teraz wszędzie jest logowanie czyli stanowość i nikt nie ma z tym problemu. Więc jaki jest plus takiego założenia?

n0name_l
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 5 lat
  • Postów:2412
1

Teraz wszędzie jest logowanie czyli stanowość i nikt nie ma z tym problemu.

W Play tez przeciez jest i tez nikt nie ma z tym problemu. :\

Więc jaki jest plus takiego założenia?

Skalowalnosc.

krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:1272
0

Ok. Ale w play jest stan trzymany w ciachu, czyli i tak jest ta informacja trzymana, przekazywana i znana. W czym to rozwiązanie poprawia skalowalność w porównaniu do podejścia z sesją? Przecież rozwiazania JEE/Spring też są uważane za bardzo skalowalne a posiadają mechanizm sesji.

airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 7 lat
  • Postów:274
1
krzysiek050 napisał(a):

Teraz wszędzie jest logowanie czyli stanowość

Nie, logowanie i stanowość to dwie zupełnie rzeczy i niekoniecznie powiązane ze sobą. Cały REST opiera się na bezstanowości, po prostu każde żądanie zawiera dane niezbędne do uwierzytelnienia użytkownika.

krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:1272
0

No ok. Rozumiem to. Ale to jest tylko filozofia. Efekt jest przecież ten sam, czyli znam tożsamość użytkownika. Za to takie rozwiązanie posiada minusy:

  • Nie mogę nic ukryć przed użytkownikiem.
  • Sprawdzanie podpisu per request - zapewne wolniejsze niż powiązanie jsessionid z danymi.
airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 7 lat
  • Postów:274
1

Nie bardzo rozumiem, czego nie możesz ukryć.

Zobacz pozostałe 7 komentarzy
krzysiek050
Ale wtedy powstanie coś ala serializacja sesji którą opisał Koziołek niżej. Dodatkowo sam będę musiał tym zarządzać.
Koziołek
Niekoniecznie. Serializacja o ktorej mówię dotyczy CAŁEJ sesji wraz z przyległościami. Tu serializujesz tylko część biznesową. Zresztą jakoś koszyk przechowywać musisz w takim modelu (baza danych) zatem i tak mechanizm musisz w jakiś sposób napisać.
krzysiek050
A jakie przyległości zawiera np. Spring? Tzn nawet dla tego przykladu, co oprócz koszyka i username. A koszyka nie musiałbym tworzyć gdybym miał go w sesji i po akceptacji wrzucał prosto jako zamówienie.
Koziołek
na przykład atrybuty sesji (z kontenera), listenery, kontekst itp. Pamiętaj, że ty widzisz w swoim kodzie tylko "użyteczną" część frameworku, bez bebechów.
krzysiek050
Ok. Dzięki wam za dyskusję. Trochę mi w głowie pojasniało :).
Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:dzień
  • Lokalizacja:Stacktrace
  • Postów:6822
2

Nie jest ten sam. Sprawdzanie podpisu per request choć wolniejsze (ciekawe o ile) pozwala na znacznie lepszy loadbalacing całego rozwiazania. W klasycznym podejściu gdy masz cluster loadbalacer musi:
a) kierować danego użytkownika na konkretny serwer na którym się zalogował i który ma jego sesję w pamięci. Wada - jak serwer padnie to sesja razem z nim.
b) każdorazowo zapisywać i odtwarzać stan sesji z np. bazy danych jeżeli kieruje do "pierwszego wolnego". Wada - serializacja sesji jest strasznie powolna...

Brak sesji w taki sposób jak realizuje to Play2 łączy zalety klasycznych podejść tzn. masz failover, skalowalność horyzontalną i ogólnie zapewnienie "ciągłości działania" jednocześnie zapewniajac bardzo sprawną obsługę autoryzacji i autentykacji.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
krzysiek050
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 4 lata
  • Postów:1272
0

Bardzo rzeczowa odpowiedz. Dzieki :).

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.