Interazione Client-Server
L’interazione tra un Client e un Server può essere infatti di due tipi:
- stateful: esiste stato dell’interazione e quindi l’n-esimo messaggio può essere messo in relazione con gli n-1 precedenti
- stateless: non si tiene traccia dello stato, ogni messaggio è indipendente dagli altri
Interazioni stateless
Un’interazione stateless è possibile senza generare grossi problemi solo se il protocollo applicativo è progettato con operazioni idempotenti
- operazioni idempotenti producono sempre lo stesso risultato, indipendentemente dal numero di messaggi M ricevuti dal server stesso
Interazioni stateful
Non tutte le applicazioni possono fare a meno dello stato
Tutte le volte in cui abbiamo bisogno di personalizzare delle richieste Web, possiamo beneficiare di interazione stateful
Stato
Possiamo classificare lo stato in modo più preciso:
- stato di esecuzione (insieme dei dati parziali per un’elaborazione):
- rappresenta un avanzamento in una esecuzione
- per sua natura è uno stato volatile
- può essere mantenuto in memoria lato server come stato di uno o più oggetti
- stato di sessione (insieme dei dati che caratterizzano una interazione con uno specifico utente):
- la sessione viene gestita di solito in modo unificato attraverso l’uso di istanza di oggetti specifici (supporto a oggetti sessione)
- stato informativo persistente (ad esempio gli ordini inseriti da un sistema di eCommerce):
- viene normalmente mantenuto in una struttura persistente come un database
Sessione
La sessione rappresenta lo stato associato ad una sequenza di pagine visualizzate da un utente
Contiene tutte le informazioni necessarie durante l’esecuzione:
- informazioni di sistema: IP di provenienza, lista delle pagine visualizzate, ..
- informazioni di natura applicativa: nome e cognome, username, quali e quanti prodotti ha inserito nel carrello per un acquisto, ..
Lo scope di sessione è dato da:
- tempo di vita dell’interazione utente (lifespan)