Najlepsza odpowiedź
Bezstanowy oznacza, że nie ma stanu.
Weźmy na przykład serwer WWW. Może być stanowy lub bezstanowy.
Stanowy oznaczałby, że serwer przechowuje pewne informacje o sesji w celu identyfikacji użytkownika w wielu kolejnych żądaniach. Jeśli sesja jest prawidłowa, żądania powiodłyby się.
Bezstanowe byłoby odwrotnie. Serwer nie przechowuje żadnego stanu, czyli informacji o sesji w celu identyfikacji użytkownika w wielu kolejnych żądaniach. Każde żądanie powinno zawierać sposób identyfikacji użytkownika. Jednym ze sposobów osiągnięcia tego jest użycie tokena (na przykład tokena internetowego JSON lub OAuth). Ten token byłby wysyłany z każdym żądaniem (zwykle w nagłówkach żądań).
Eliminuje to potrzebę przechowywania danych sesji przez serwery, co wpływa na skalowalność, ponieważ przejście na wiele serwerów w przeciwnym razie wymaga udostępniania danych sesji.
Odpowiedź
Słyszałeś kiedyś o czymś, co nazywa się „sesjami” w kontekście sieci?
Wyjaśnię, nie uogólniając pojęcia, ale trzymając się bardziej powszechne spotkanie, które prawie każdy z nas miał w Internecie lub WWW.
Serwery stanowe przechowują informacje o stanie użytkownika w postaci sesji. Różni się to od „logowania się na konto” w witrynie internetowej. Obecnie większość witryn HTTP dostępnych przez WWW przechowuje informacje o sesji użytkownika. Tak więc podczas trwania sesji wszystkie żądania należą do tej konkretnej sesji, która została otwarta, gdy po raz pierwszy odwiedziłeś stronę w tej witrynie. Zwykle sesja zostaje zakończona dopiero po zamknięciu przeglądarki. Utrzymywanie informacji o sesji pomaga serwerowi sieciowemu oferować spersonalizowaną usługę. Co więcej, sesje pomagają również w monitorowaniu jednoczesnego ruchu internetowego w dowolnym momencie, oferują funkcje bezpieczeństwa, takie jak blokowanie złośliwego użytkownika, który próbuje wyłączyć serwer, wysyłając wiele żądań do serwera (prawdopodobnie przy użyciu tej samej ustanowionej sesji). Wreszcie sesje służą do „logowania” do witryny internetowej. Po zalogowaniu się na stronie internetowej Twój unikalny identyfikator jest zapisywany przez usługę sieciową w sesji, którą otworzyłeś i dla wszystkich późniejszych żądań serwer sieciowy wie, że to Ty uzyskujesz dostęp do usługi.
Bezstanowy serwery z drugiej strony nie przechowują żadnych informacji o stanie użytkownika. Każde żądanie jest całkowicie niezależne od poprzedniego żądania. Najpopularniejszą architekturą bezstanową korzystającą z protokołu HTTP jest REST (REpresentational State Transfer), który jest używany do projektowania internetowych interfejsów API. Serwery bezstanowe mogą nadal być w stanie zidentyfikować użytkownika, jeśli żądanie do usługi zawiera unikatowy identyfikator użytkownika, który został wcześniej przydzielony użytkownikowi. Ale ten identyfikator użytkownika będzie musiał być przekazywany w każdym żądaniu, inaczej niż w przypadku serwerów Stateful, które utrzymują ten identyfikator użytkownika w sesji, a dane żądania niekoniecznie muszą zawierać ten identyfikator.
Dzięki tej odpowiedzi I Próbowałem podkreślić główne różnice między serwerami stanowymi i bezstanowymi. Różnice można rozszerzyć na bardziej uogólnione scenariusze.