Lezione 9 – Caratterizzazione di servizi web validi

Transcript

Lezione 9 – Caratterizzazione di servizi web validi
Lezione 9 – Caratterizzazione di
servizi web validi
Ingegneria dei Processi Aziendali
Modulo 1 – Servizi Web
Unità didattica 1 – Protocolli Web
Ernesto Damiani
Università di Milano
Caso di studio: servizio web di
convertitori di valuta
• Si crei un servizio web che converta un valore in
una valuta nel valore equivalente in un‟altra valuta
usando i tassi di una particolare data
– Ad esempio, il 2 Novembre 2010, alla chiusura delle
contrattazioni 100 € equivalevano a 140,33 $
 Supponiamo che il nome dell‟host per questo servizio sia:
www.cambiavalute.com
Step 1: identificazione delle risorse
• La risorsa è un form di conversione valute
Si noti che l‟URL è un URL logico
Step 2
• Il client GETs (“prende”) il form immettendo l‟URL
Step 3
• Il client riempie il form e poi lo invia (POST) allo
stesso URL (quindi “aggiornando” il form)
Attenzione! Direzione errata!
• Stiamo andando nella direzione sbagliata!
• Il nome “convertitore valute” avrebbe dovuto
immediatamente avvertirci di un problema: è un
processo!
– Il “form” del convertitore valute nasconde l‟intenzione di
fare qualcosa. È il paradigma di programmazione RPC che si
insinua furtivamente nel Web
• Il paradigma REST non riguarda l‟invocazione di
processi, bensì lo scambio di informazioni
• Un convertitore di valute non è un servizio web
appropriato secondo il paradigma REST
Analogie con un servizio web di
conversione documenti
• Sarebbe ragionevole creare un servizio web che
converte i formati di documenti?
Attenzione! Direzione errata!
L’approccio corretto
Analogie con un servizio web di
conversione immagini
• Sarebbe ragionevole creare un servizio web che
converte i formati delle immagini?
Attenzione! Direzione errata!
L’approccio corretto
FAQ
• “Supponiamo che abbia ottenuto un file .bmp di
un‟immagine importante e voglia renderla disponibile
ai client attraverso un servizio web. Attualmente non
ci sono disponibili altri formati dell‟immagine (.jpg,
.gif). Questo non è un esempio di situazione in cui
sarebbe utile un servizio web che converte il formato
delle immagini?”
Risposta alla FAQ
• “No! Ovviamente la conversione è necessaria, ma
questo non significa che dovrebbe essere creato un
servizio web separato. Esistono già molti pacchetti
open-source che convertono le immagini e il servizio
web dovrebbe usare uno di questi (attraverso una
composizione)
Analogie con un servizio web di
ordinamento
• Sarebbe ragionevole creare un servizio web di
ordinamento?
Attenzione! Direzione errata!
L’approccio corretto
Servizio web di convertitori di valute
• Sarebbe ragionevole creare un servizio web che
converte le valute?
Attenzione! Direzione errata!
L’approccio corretto
Dal paradigma dei processi al paradigma
delle informazioni
• Si noti come abbiamo riformulato i problemi, dal
“fare qualcosa” allo “scambiare informazioni” (in un
formato appropriato)
– Invece di un convertitore dei formati dei documenti, il
servizio notizie offre notizie in formati diversi
– Invece di un convertitore dei formati delle immagini, il
servizio cartine offre cartine in formati diversi
– Invece di un servizio ordinamento, il servizio personale
offre l‟elenco del personale ordinato secondo vari criteri
– Invece di un servizio cambia valute, il servizio di conto
corrente bancario offre il saldo nella valuta appropriata
Gusti precisi
• Se si vuole una pizza con pomodoro, aglio e
origano non se ne ordina una con pomodoro,
mozzarella e acciughe chiedendo poi al cameriere di
togliere mozzarella, acciughe e aggiungere l‟aglio, si
chiede fin dall‟inizio una pizza alla marinara!
Soddisfare le aspettative dei clienti (1)
• [anni „20] Henry Ford disse: “"Ognuno può avere
una Modello T del colore che preferisce purché sia
nero“
• [1923] Alfred Sloan capì il problema (cioè che Ford
non rispettava le richieste dei clienti) e consentì ai
clienti di ordinare le automobili nel colore preferito
• [1927] Chevrolet mise Ford quasi fuori mercato
Soddisfare le aspettative dei clienti (2)
• Esaudire le richieste dei clienti non vuol dire
altro che fornire più tipi di contenuto
Tipo di contenuto inesistente (1)
• Non esiste il tipo di contenuto EUR, THB!
Tipo di contenuto inesistente (2)
• Non esiste nemmeno il tipo di contenuto
“ordinato in base al cognome”!
Analogie con l’esempio di priorità di
prenotazione aerea (1)
• Approccio 1: indicare nel payload la valuta
desiderata
Analogie con l’esempio di priorità di
prenotazione aerea (2)
• Approccio 2: inserire nell‟URL la valuta
desiderata
Riformulare il problema
• Se non si sa come creare un servizio di
conversione valuta si deve riformulare il problema e
affrontarlo in termini di scambio di informazioni
– Riformulare il problema in un problema di informazioni
porta a una diversa soluzione
– L‟elemento chiave nel riformulare il problema della valuta
è vedere che la risorsa è il valore ed è rappresentato in
diverse valute
La giusta valuta nel posto giusto (1)
• Un aspetto interessante del Web è che i client
possono vedere i valori espressi nel loro “linguaggio”
nativo quando sono nei loro “ambienti” nativi
– Questo è vero se si sta parlando di ottenere le immagini o i
documenti nel giusto formato, le notizie nel modo in cui si
desidera averle oppure il valore nella giusta valuta
La giusta valuta nel posto giusto (2)
• Un servizio web dovrebbe eseguire (tramite
composizione) la conversione nella valuta
appropriata per il client
– Se si è in patria (Italia) e si deve prenotare l‟Hilton di Parigi
con la carta di credito, l‟Hilton dovrebbe dare la tariffa della
camera in Euro
– Se si è a Bangkok e si preleva del denaro per pagare un
pranzo, la banca dovrebbe mostrare il saldo del proprio
conto in Thai Baht
Implementazione del servizio web per il
conto di Dusi
• Giovanni Dusi ottiene (GET) il suo estratto conto
in Euro
Valuta ricevuta
• La valuta che si ottiene è quella appropriata al
Paese in cui ci si trova
– (la conversione è invisibile)
Giovanni Dusi ottiene (GET) il suo estratto conto
in Thai Baht
•
Cos’è un servizio web?
• Un servizio web è un‟implementazione software
per una risorsa, identificata da un URL e raggiunta
usando protocolli internet
• Il software converte la risorsa in un tipo di
contenuto appropriato
• Se non fosse richiesta alcuna conversione, tutto
potrebbe essere statico; non sarebbe richiesto
alcun software o servizio web
• Il motivo per cui abbiamo il software è per
convertire le informazioni
FINE