|
Il problema principale da risolvere per la realizzazione di un
carrello della spesa è la mancanza di "memoria"
caratteristica del protocollo HTTP. Per chiarire questo problema
dobbiamo esaminare in maggior dettaglio come funziona detto
protocollo. Quando un utente naviga nel Web, segue dei link o invia
delle form. Il primo caso corrisponde ad una richiesta HTTP di tipo
GET, mentre il secondo corrisponde generalmente ad una richiesta HTTP
di tipo POST. Entrambe le richieste possono essere date in qualunque
momento senza che debbano essere effettuate preventivamente altre
operazioni.
In termini tecnici il protocollo HTTP è senza stato. Notare
che questo non è vero necessariamente in tutti i protocolli.
Per esempio il protocollo POP, che viene utilizzato per prelevare la
posta elettronica da un server, mantiene uno stato. In particolare non
si può prendere la propria posta senza essersi preventivamente
identificati. Il protocollo richiede che vengano eseguite alcune
operazioni preliminari per specificare nome utente e password, e le
ricorda, ed è in base a nome utente e password che sceglie la
mailbox a cui consentire l'accesso.
Il fatto che l'HTTP sia senza stato è per certi versi un
vantaggio: qualunque pagina può essere richiesta in qualunque
momento senza che si debbano visitare prima altre pagine. Il Web
funziona così, e consente una consultazione semplice riducendo
il carico di informazioni che devono essere gestiti dal
browser. Inoltre in questo modo è possibile specificare la
collocazione di un documento o di una generica informazione
semplicemente utilizzando una stringa (l'URL) che può anche
essere memorizzata e comunicata ad altri.
Questa semplicità generale però nel contesto di un
negozio online è una limitazione: l'ordine che viene composto
(il carrello della spesa) rappresenta una informazione proveniente
dalle operazioni che l'utente ha effettuato: cioè uno stato,
che l'HTTP non può mantenere. Occorre pertanto aggirare la
mancanza di stato, trovando un posto dove memorizzare l'ordine che
viene raccolto.
Poiché ogni pagina HTML viene generata dinamicamente, il
posto più ovvio in cui inserire le informazioni di stato
dell'ordine è appunto la pagina Web stessa. Le form HTML
prevedono dei campi, detti HIDDEN (nascosti), che sono l'ideale per
inserire informazioni di stato mantenute nelle pagine generate. In
pratica ad ogni richiesta il server produce una risposta completa che
contiene l'intero ordine. È quindi il browser a memorizzare
l'ordine, o meglio la pagina HTML visualizzata dal browser.
Questa soluzione, seppur impiegata di frequente, non è
esente da difetti. Il principale è la complessità di
realizzazione: il programmatore deve, ad ogni pagina del negozio
visitata, generare informazioni che consentano la memorizzazione di
tutto quanto riguarda l'ordine corrente. Un secondo problema è
legato alla relativa inefficienza del metodo: ad ogni passo l'intero
ordine va dal browser al server e poi ritorna indietro modificato. A
meno di non avere un ordine contenente migliaia di elementi raramente
questo è realmente causa di inefficienze, ma non toglie che si
tratta di un modo poco elegante di risolvere il problema. Il nodo
reale comunque è la complessità di implementazione.
|