
guide
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
SOAP, il protocollo basato su XML per l’interazione tra applicazioni Web
Come tutti sappiamo il Web è una fonte inesauribile di informazioni. Milioni di pagine mettono a disposizione dati di qualsiasi tipo che possiamo utilizzare per lavoro, per hobby o per divertimento. Tuttavia le informazioni pubblicate sul Web sono fruibili soltanto da esseri umani dotati di browser e non si prestano bene per la loro elaborazione da parte di applicazioni software.
Immaginiamo il seguente scenario: dobbiamo acquistare un libro ed abbiamo un elenco di indirizzi di siti Web internazionali che vendono libri on line. L’approccio classico a questo problema consiste nel dotarci di una buona dose di pazienza e di visitare ciascun sito, ricercare il libro che ci interessa, prendere nota del prezzo e delle spese di spedizione. Una volta compilata la lista dei prezzi praticati dai diversi rivenditori on line dobbiamo riportare i prezzi in un’unica valuta, ad esempio l’euro, per poterli confrontare e finalmente individuare il rivenditore più conveniente.
Queste operazioni richiedono un certo impegno per poter essere portate a termine; senza dubbio risulterebbe comodo avere un programma che le eseguisse per conto nostro. Potremmo indicare la lista dei rivenditori on line da consultare ed il programma ci individua il minor prezzo praticato. Volendo si potrebbe anche pensare di ordinare il libro direttamente tramite il programma.
Per rendere concreto questo scenario possiamo utilizzare SOAP.
Il Simple Object Access Protocol (SOAP) è un protocollo basato su XML che consente a due applicazioni di comunicare tra loro sul Web. Pubblicato come Working Draft dal W3C nel dicembre 2001 (www.w3.org/TR/soap12-part0, www.w3.org/TR/soap12-part1, www.w3.org/TR/soap12-part2), SOAP definisce il formato dei messaggi che due applicazioni possono scambiarsi utilizzando i protocolli Internet, come ad esempio HTTP, per fornire dati e richiedere elaborazioni. Il protocollo è indipendente dalla piattaforma hardware e software ed è indipendente dal linguaggio di programmazione utilizzato per sviluppare le applicazioni comunicanti.
Grazie a questo protocollo, il concetto di Web come piattaforma per la pubblicazione di documenti contenenti informazioni fruibili da esseri umani cambia radicalmente. È possibile affiancare alla pubblicazione classica delle pagine Web una pubblicazione delle informazioni destinate alle applicazioni. Questo nuovo tipo di pubblicazione costituisce i cosiddetti servizi Web. Un servizio Web è un’applicazione che fornisce funzionalità tramite il Web in maniera indipendente dalla piattaforma utilizzata. I meccanismi che consentono questa indipendenza sono XML e HTTP.
Abbiamo detto SOAP è basato su XML. In effetti, un messaggio SOAP non è altro che un documento XML che descrive una richiesta di elaborazione o il risultato di una elaborazione. In particolare, un messaggio SOAP è costituito dai seguenti elementi:
Rappresenta il contenitore del messaggio e costituisce l’elemento root del documento XML
È un elemento opzionale che contiene informazioni globali sul messaggio; ad esempio, nell’header potrebbe essere specificata la lingua di riferimento del messaggio, la data dell’invio, ecc.
Rappresenta la richiesta di elaborazione o la risposta derivata da una elaborazione
Se presente, fornisce informazioni sugli errori che si sono verificati durante l’elaborazione; questo elemento può essere presente soltanto nei messaggi di risposta
È opportuno evidenziare che SOAP definisce soltanto la struttura dei messaggi non il loro contenuto. I tag per descrivere una richiesta di elaborazione o un risultato vengono definiti in uno schema specifico ed utilizzati all’interno della struttura SOAP sfruttando il meccanismo dei namespace.
Facciamo un semplice esempio per fissare le idee. Riferendoci allo scenario esposto all’inizio di questo articolo, vediamo come può essere il messaggio SOAP che richiede il prezzo di un determinato libro:
<soap:Envelope
xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope”
soap:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding”>
<soap:Body xmlns:mybook=”http://www.books.com/soapbook”>
<mybook:GetBookPrice>
<mybook:ISBN>12-3456-789-0</mybook:ISBN>
</mybook:GetBookPrice>
</soap:Body>
</soap:Envelope>
L’elemento Envelope prevede un riferimento al namespace http://schemas.xmlsoap.org/soap/envelope che definisce il prefisso soap: come elemento che contraddistingue i tag e gli attributi stabiliti dal protocollo.
Il Body del messaggio contiene la descrizione della richiesta del prezzo di un libro. I tag XML utilizzati per questa descrizione fanno riferimento al namespace http://www.books.com/soapbook identificato dal prefisso mybook. In particolare, possiamo vedere la richiesta come una chiamata alla funzione GetBookPrice con il codice ISBN del libro come parametro.
A questa richiesta il servizio Web pubblicato sul sito del rivenditore potrebbe rispondere con un messaggio di questo tipo:
<soap:Envelope
xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope”
soap:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding”>
<soap:Body xmlns:mybook=”http://www.books.com/soapbook”>
<mybook:GetBookPriceResponse>
<mybook:Price>42.10</mybook:Price>
</myboo:GetBookPriceResponse>
</soap:Body>
</soap:Envelope>
Anche in questo caso la risposta viene descritta facendo uso di tag personalizzati definiti dallo stesso namespace della richiesta.
Nel caso in cui si fosse verificato un errore nell’elaborazione della richiesta, un ipotetico messaggio d’errore avrebbe la seguente forma:
<soap:Envelope
xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope”
soap:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding”>
<soap:Body>
<soap:Fault>
<faultcode>Client</faultcode>
<faultstring>Invalid Request</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
In questo caso l’elemento Fault descrive il tipo di errore che si è verificato facendo uso di tag predefiniti. In particolare, il tag <faultcode> indica una particolare codifica d’errore, mentre il tag <faultstring> fornisce una descrizione dell’errore. Nel caso specifico, il client ha inviato una richiesta non corretta.
Lo scenario descritto all’inizio di questo articolo può sembrare futuribile. In realtà, l’uso di SOAP come protocollo per lo scambio di informazioni tra applicazioni sul Web è ormai un dato di fatto. Il protocollo è supportato dai principali produttori software (IBM, Sun, Microsoft, ecc.) ed esistono pacchetti per lo sviluppo di servizi Web sulla maggior parte delle piattaforme.
Non mancano i servizi Web accessibili tramite SOAP; basta dare uno sguardo al sito www.webservices.org per rendersene conto. Tra gli altri servizi Web ha fatto notizia la recente pubblicazione delle API di Google (http://www.google.com/apis), un insieme di funzioni di interrogazione del noto motore di ricerca invocabili tramite SOAP da una qualsiasi applicazione.
In futuro, quindi, (o già nel presente?) potremo crearci delle applicazioni che navigano per noi sul Web, elaborano i dati recuperati secondo i criteri da noi specificati e ci restituiscono i risultati, consentendoci di risparmiare tempo da impiegare in attività – si spera – più piacevoli.
Andrea Chiarelli (a.chiarelli@manthys.it) si occupa di progettazione e sviluppo di applicazioni Web e di formazione professionale presso Manthys (www.manthys.it), società di formazione e consulenza informatica di cui è titolare. Collabora con diverse riviste di settore sia italiane (Computer Programming, Dev, Visual Basic Journal) che straniere (ASPToday) ed è autore di testi su JavaScript e ASP.
Se vuoi aggiornamenti su SOAP: far comunicare le applicazioni sul Web inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
Parliamo di Arduino/Galileo come board completa per realizzare progetti completamente compatibili con le board più comuni, con la marcia in […]
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Come creare applicazioni per il Web con PHP e MySQL per il DBMS.
Tutte le principali tecnologie per diventare uno sviluppatore mobile per iOS.
I fondamentali per lo sviluppo di applicazioni multi piattaforma con Java.
Diventare degli esperti in tema di sicurezza delle applicazioni Java.
Usare Raspberry Pi e Arduino per avvicinarsi al mondo dei Maker e dell’IoT.
Le principali guide di HTML.it per diventare un esperto dei database NoSQL.
Ecco come i professionisti creano applicazioni per il Cloud con PHP.
Lo sviluppo professionale di applicazioni in PHP alla portata di tutti.
Come sviluppare applicazioni Web dinamiche con PHP e JavaScript.
Fare gli e-commerce developer con Magento, Prestashop e WooCommerce.
Realizzare applicazioni per il Web utilizzando i framework PHP.
Creare applicazioni PHP e gestire l’ambiente di sviluppo come un pro.
Percorso base per avvicinarsi al web design con un occhio al mobile.
Realizzare siti Web e Web application con WordPress a livello professionale.
Simple DnsCrypt è un tool che permette di criptare i DNS quando si usa una VPN, garantendo il totale anonimato della navigazione su Internet.
Versione corretta e potenziata dei Nifty Corners
Dalle pop-up ai nuovi formati, quale sarà la scommessa vincente per la pubblicità del futuro? Il valore della contestualizzazione
Ultradev permette di creare siti dinamici in ASP, JSP e Cold Fusion. È utilissimo per la creazione di siti di commercio elettronico e per la gestione di siti con database