Stateless - Non c'è memoria (stato) mantenuta dal programma
Stateful - Il programma ha una memoria (stato)
Per illustrare il concetto di stato definirò una funzione che è stateful e una che è stateless
Stateless
//The state is derived by what is passed into the function
function int addOne(int number)
{
return number + 1;
}
Stateful
//The state is maintained by the function
private int _number = 0; //initially zero
function int addOne()
{
_number++;
return _number;
}
Come altri hanno detto che http è intrinsecamente stateless. Quindi lo stato deve essere incorporato nelle tue applicazioni.
Immagina una richiesta sul web in cui hai un browser client che comunica con un processo del server. Per mantenere lo stato tramite il protocollo http stateless, il browser invierà in genere un identificativo di sessione al server per ogni richiesta. Per ogni richiesta il server sarà come "ah, è questo ragazzo". Le informazioni di stato possono quindi essere ricercate nella memoria lato server o in un database basato su questo ID di sessione.
In un ambiente prettamente stateless non avresti bisogno di questo ID di sessione. Ogni richiesta conterrebbe tutte le informazioni che il server dovrebbe elaborare. Ma molte applicazioni devono mantenere lo stato per tenere traccia di se una sessione è autenticata o meno per visualizzare determinati contenuti o per tenere traccia di ciò che un utente sta facendo. Non vorrai inviare credenziali utente sul filo per ogni richiesta.