Cosa sono i “Web service” e come funzionano? In particolare potreste chiarirmi le idee sul SOAP e su come interagisce con XML. Grazie

Per descrivere il concetto di Web service occorre procedere per gradi inikziando dal funzionamento dei vari servizi che sono nati sul Web.

I servizi basati su tecnologia Web sono quelle particolari pagine web che consentono, ad esempio, di accedere al proprio conto corrente bancario, di prenotare on-line i biglietti ferroviari ed i voli aerei, di mettere in vendita un’auto usata, ecc.

Il loro funzionamento si basa sul concetto di “pagina dinamica” cioè sulla possibilità di associare ad una particolare URL, anziché il contenuto “statico” di un file contenuto nel server a cui l’utente si collega, un programma (che gira sullo stesso server) che è in grado di reagire alle informazioni che riceve dal browser dell’utilizzatore e rimandare indietro contenuti di volta in volta variabili

Alla base del meccanismo delle pagine dinamiche sta la precisa definizione delle modalità di scambio di informazioni fra il browser (ovvero il programma per navigare: Explorer, Firefox, Opera, ecc.) ed il server Web. Questa modalità viene chiamata CGI (Common Gateway Interface) e stabilisce tutte le regole con cui un programma che viene lanciato quando l’utente “clicca” su un link della pagina, riceve le informazioni e può mandare indietro i suoi risultati.

Il meccanismo è concettualmente abbastanza semplice; per chiarirlo utilizziamo come esempio la ricerca di un numero telefonico nelle pagine gialle (http://www.paginegialle.it):

  • Quando l’utente si collega al sito viene visualizzata una pagina contenente un form, ovvero alcuni campi in cui possono essere digitate le parole per effettuare la ricerca.
  • L’utilizzatore inserisce le parole da cercare ea agisce su un link, che spesso assume la forma di un pulsante.
  • Il link corrisponde ad una particolare URL la cui sintassi indica al server che deve essere attivata una procedura.
  • Il server riceve la richiesta che contiene anche, opportunamente codificate, le informazioni specifiche introdotte dall’utente nel form, e manda in esecuzione la procedura richiesta passandole come argomenti tali informazioni.
  • La procedura esegue le operazioni richieste (nel nostro esempio, lancia una ricerca sul database dei numeri telefonici delle pagine gialle) e, con il risultato ottenuto, prepara i dati necessari a definire una nuova pagina di risposta e li rimanda indietro al browser dell’utente.

Tutto ciò può essere complicato dalla necessità di identificare l’utente in modo sicuro, impedire accessi non autorizzati ad informazioni sensibili, prevedere i casi di malfunzionamento della rete, ecc., ma le linee essenziali del meccanismo rimangono quelle descritte.

Per fornire un servizio via Web occorre quindi: un server Web che risponda alle richieste degli utilizzatori ed in più la possibilità di scrivere e far funzionare i programmi di servizio.
Una delle piattaforme più utilizzate a questo scopo è basata completamente su applicazioni open source ed ha preso il nome di LAMP: (Linux + Apache + MySQL + Php/Perl/Python), ovvero è basata sul server web Apache che gira in ambiente Linux, utilizza il motore MySQL come struttura di archiviazione dati ed uno dei linguaggi Php, Perl oppure Python per la realizzazione dei programmi. Una ricerca in rete con la sigla “LAMP” consente di accedere alla grande mole di informazioni su questa tecnologia.

Con l’aumentare della complessità dei servizi forniti tramite Web, nasce presto la necessità di integrare fra loro diversi fornitori; ad esempio un fornitore di servizi di telefonia mobile (chiamiamolo TelecomX) potrebbe avere interesse ad integrare nella propria pagina web il servizio di acquisto di telefoni cellulari di un produttore “consorziato” (che chiameremo CellPhone) in modo da fornire ai suoi clienti in un’unica pagina tutte le operazioni necessarie per acquistare l’apparcchio telefonico ed il relativo servizio. Questo richiede che i programmi di supporto al sito di TelecomX devono poter interagire con gli analoghi programmi per la vendita on-line dei celluari CellPhone. È nata quindi la necessità di sviluppare una tecnica standard che consenta a questi tipi di programmi di scambiarsi dati ed informazioni in modo da poter creare servizi integrati più completi.

Lo standard SOAP (Simple Object Access Protocol) è stato proposto dal consorzio W3C (ovvero l’organizzazione che cura lo sviluppo ordinato delle tecnologie basate sul Web) per consentire di definire i protocolli di interazione fra Web services, ovvero fra siti Web che offrono servizi che non solo possono essere utilizzati da utenti “umani”, ma rispondono a caratteristiche di standardizzazione tali da consentirne l’uso da parte di programmi di altri siti Web.

La descrizione del protocollo di scambio di dati fra Web services prevista dallo stanbdard SOAP utilizza il linguaggio XML (eXtensible Markup Language), ovvero un linguaggio mediante il quale è possibile specificare in modo formalmente univoco tutti i dettagli dello scambio di informazioni attraverso la rete Internet fra due programmi che devono cooperare fra loro.