Web service: servizi da dispositivo a dispositivo
Utilizzare i servizi via web è una cosa ovvia per molte persone. Fare shopping online, leggere un giornale, prenotare un tavolo in un ristorante, guardare film: tutti servizi che utilizziamo più o meno ogni giorno. Molte cose accadono direttamente tra l’uomo e il dispositivo, perché la persona di fronte allo schermo naviga in rete e prende decisioni. Ma lo stesso accade anche tra i dispositivi comunicanti. Le richieste e le risposte vengono inviate continuamente avanti e indietro tra client e server, tutto grazie ai servizi web.
Che cos’è un Web service?
Un Web service fornisce un servizio tramite Internet. Si tratta quindi di un’interfaccia attraverso la quale due dispositivi (o applicazioni) possono comunicare tra loro. Questa tecnologia si basa su due caratteristiche fondamentali:
- Multipiattaforma: client e server non devono avere le stesse configurazioni per comunicare tra loro. Il servizio web fornisce quindi un terreno comune.
- Condivisione: nella maggior parte dei casi, un servizio web non è disponibile solo per un unico client, anzi, spesso vi accedono molteplici client contemporaneamente tramite Internet.
Quando viene utilizzato un Web service, un client invia una richiesta a un server e vi provoca un’azione. Il server invia quindi una risposta al client.
La tecnologia alla base di un servizio web (con esempio)
Un servizio web viene indirizzato tramite un Uniform Resource Identifier (URI) unico. Simile a un Uniform Resource Locator (URL), che consente di indirizzare i siti web, l’URI è un indirizzo per il corrispondente Web service. Teoricamente gioca un ruolo anche il servizio di directory UDDI, attraverso il quale si possono trovare i servizi web. Questo servizio, tuttavia, non ha mai preso piede e i maggiori sostenitori si sono ritirati dal progetto.
Un aspetto più importante è rappresentato dal linguaggio Web Service Description Language (WSDL). I servizi web dispongono di un file in WSDL che descrive il servizio in modo più dettagliato. Il client può utilizzare le informazioni per capire quali funzioni può svolgere sul server tramite il servizio web. Infine, la comunicazione funziona attraverso diversi protocolli e architetture. Un protocollo molto diffuso è, ad esempio, SOAP, che viene combinato con lo standard Internet HTTP o RESTful Web services. Queste tecniche vengono utilizzate per inviare e ricevere richieste e risposte.
La comunicazione si basa spesso sul linguaggio XML (Extensible Markup Language). Questo linguaggio relativamente semplice può essere compreso sia dalle persone che dai computer ed è ideale per collegare sistemi con prerequisiti diversi. REST invece è compatibile anche con altri formati, come JSON.
Per descrivere un esempio di servizio web potremmo partire da un software scritto in Visual Basic che gira su un dispositivo Windows. Il programma richiede il servizio di un server web Apache. Per farlo, il client invia una richiesta SOAP al server sotto forma di messaggio HTTP. Il servizio web interpreta il contenuto della richiesta e fa in modo che il servizio esegua un’azione. Dopo l’esecuzione, il servizio web formula una risposta che rimanda al client, sempre con SOAP e HTTP. Qui la risposta viene interpretata nuovamente e l’informazione viene trasferita al software dove viene ulteriormente elaborata.
Vantaggi e svantaggi dei servizi web
Il vantaggio principale dei servizi web è che la comunicazione avviene in modalità multipiattaforma. Questo significa che client e server non hanno bisogno di avere nulla in comune affinché la comunicazione funzioni. Per farlo, i servizi web utilizzano formati standardizzati che possono essere interpretati da tutti i sistemi.
Questi formati rappresentano, tuttavia, anche uno degli svantaggi. L'XML in particolare è un formato piuttosto ingombrante che genera pacchetti di dati di grandi dimensioni. Questo può causare problemi con connessioni di rete lente. Un altro modo in cui due sistemi possono connettersi tra loro tramite Internet sono le Web API, ovvero interfacce anch’esse accessibili via Internet. Anche se queste sono generalmente più veloci, fissano requisiti molto più precisi per il client e il server, limitandone l’interoperabilità.