Web Services
Cosa sono i Web Services?
I Web Services sono un tipo di software Internet che utilizza protocolli di messaggistica standardizzati e sono resi disponibili dal server Web di un provider di servizi applicativi per l’utilizzo da parte di un client o di altri programmi basati sul Web. Questi servizi sono talvolta definiti servizi di applicazioni Web. Forniscono un’interoperabilità potente e flessibile, consentendo interazioni macchina-macchina attraverso una rete anche con macchine e stack software non progettati per funzionare insieme in modo nativo.
Un Web service supporta un’attività specifica o un insieme di attività. Una descrizione formale specifica il servizio Web e include tutti i dettagli necessari per interagire con esso, come formati e protocolli dei messaggi. Ciò consente a quasi tutti gli stack hardware o software di utilizzare il servizio indipendentemente dalla piattaforma sottostante e dal linguaggio di programmazione utilizzati per creare il servizio.
Questa indipendenza consente interazioni multipiattaforma complesse che semplificano e ottimizzano l’accesso ai dati e il comportamento transazionale.
I Web Services spaziano da servizi principali come la gestione dell’archiviazione e la gestione delle relazioni con i clienti a servizi più limitati come la fornitura di una quotazione azionaria e il controllo delle offerte per un articolo all’asta.
Gli utenti possono accedere ad alcuni Web Services tramite un accordo peer-to-peer anziché tramite un server centrale. Alcuni servizi possono comunicare con altri servizi. Il middleware generalmente si occupa di questo scambio di procedure e dati. L’esigenza di Web Services è emersa quando tutte le principali piattaforme sono state in grado di accedere a Internet, ma diverse piattaforme non potevano interagire tra loro. I Web Services hanno portato le piattaforme a un livello superiore pubblicando funzioni, messaggi, programmi e oggetti sul resto di Internet.
Tipi di Web Services
I Web Services sono creati utilizzando standard e protocolli aperti per integrarsi con varie applicazioni. I protocolli utilizzati dai Web Services includono i seguenti:
- Extensible Markup Language. XML è utilizzato per contrassegnare, codificare e decodificare i dati. XML-remote procedure call, o XML-RPC, è un protocollo XML di base che utilizza HTTP per scambiare dati e comunicare tra sistemi client e server.
- Simple Object Access Protocol. SOAP è un protocollo di servizio Web basato su XML utilizzato per trasferire dati utilizzando messaggi SOAP. Il protocollo SOAP è stato sviluppato per consentire a diversi linguaggi di programmazione di comunicare rapidamente e con il minimo sforzo utilizzando HTTP o Simple Mail Transfer Protocol (SMTP).
- Linguaggio di descrizione dei Web Services. WSDL è utilizzato per indicare all’applicazione client cosa è incluso nel servizio Web e come connettersi. Le varianti di WSDL includono Web Services Conversation Language e Web Services Flow Language.
- Representational State Transfer. Basato su HTTP, REST fornisce interoperabilità tra dispositivi e Internet per attività basate su API (Application Programming Interface). Sebbene non tutti i Web Services RESTful utilizzino il protocollo REST, le applicazioni create con API RESTful sono più leggere, gestibili e scalabili.
- Universal Description, Discovery and Integration. UDDI è uno standard basato su XML che elenca e descrive in dettaglio quali servizi sono disponibili in un’applicazione. Rende i Web Services rilevabili da altri servizi e facilita le transazioni digitali e l’e-commerce.
Come funzionano i Web Services
I Web Services consentono a diverse organizzazioni o applicazioni da più fonti di comunicare senza dover condividere dati sensibili o infrastrutture IT. Invece, tutte le informazioni si spostano tramite un’interfaccia programmatica attraverso una rete. Questa interfaccia può quindi essere aggiunta a una GUI, come una pagina Web, per fornire funzionalità specifiche agli utenti. Ciò significa che i Web Services non sono specifici di un linguaggio di programmazione o sistema operativo (SO) e non richiedono l’uso di browser o Hypertext Markup Language (HTML).
La maggior parte dei Web Services funziona utilizzando un tipico comportamento client-server. Un’applicazione in esecuzione su un computer client o dispositivo mobile ha accesso a una rete come Internet. Un server fornisce dati e capacità di elaborazione.
Il processo include i seguenti tre passaggi:
- Il client invia una richiesta al server che include dettagli e dati richiesti dal servizio Web. I dati possono essere in qualsiasi formato comune come JavaScript Object Notation (JSON) o XML.
- Il lato server riceve e autentica la richiesta, analizza i dettagli richiesti, elabora la richiesta e accede a tutti i risultati appropriati.
- Il server accede a tutti i risultati appropriati e li invia all’applicazione client, che li visualizza in un formato e in uno stile appropriati per l’applicazione.
La chiave di questo processo è che l’applicazione client è debolmente accoppiata, ovvero non ha alcuna relazione, con il server o i servizi dati. Il servizio Web consente al client di comunicare con il server. Di conseguenza, molte applicazioni, scritte da innumerevoli sviluppatori e aziende, possono utilizzare un servizio Web per accedere a servizi di elaborazione o dati.
I siti Web che utilizzano Web Services per accedere e visualizzare dati di mappe da un servizio importante come Google Maps sono un esempio di queste applicazioni client. Nessuno di questi siti Web sa o si interessa di come funziona Google Maps. È il servizio Web che fornisce un mezzo comune per interagire con Google Maps per ottenere dati di Google Maps.
Caratteristiche dei Web Services
I Web Services in genere utilizzano XML per lo scambio di informazioni e hanno alcune altre caratteristiche comuni, tra cui le seguenti:
- Sono accessibili agli utenti tramite il Web, consentendo la pubblicazione, la scoperta e l’invocazione dei Web Services.
- Sono modulari, quindi i servizi possono essere utilizzati in modo indipendente o aggregati in una configurazione organizzata o concatenata per formare set più complessi di Web Services. Questo è un importante mezzo di modularità e riutilizzabilità del software.
- Gli standard aperti consentono loro di interagire con qualsiasi linguaggio di programmazione o sistema operativo.
- Sono autosufficienti, quindi non è necessario alcun software aggiuntivo sul lato client, a parte un linguaggio di programmazione con supporto XML e HTTP.
- Si autodescrivono, utilizzando la semantica XML comune, quindi un file WSDL fornisce tutte le informazioni necessarie per richiamare un servizio.
- Sono rilevabili tramite un meccanismo comune come UDDI.
- Sono spesso open source a causa degli standard comuni sottostanti.
- Sono debolmente accoppiati e non hanno alcuna dipendenza dall’implementazione lato server sottostante.
- Sono indipendenti da qualsiasi interfaccia utente a favore dell’accesso e del funzionamento programmatici solo tramite codice.
Utilizzi dei Web Services
I Web Services vengono utilizzati per molte attività, le più comuni delle quali sono il riutilizzo del codice, la distribuzione di servizi e la connessione di programmi esistenti.
Riutilizzo del codice
Con i suoi protocolli di comunicazione universali, il metodo del servizio Web può aiutare gli sviluppatori a segmentare le applicazioni in componenti che possono essere riutilizzati per varie esigenze. Ad esempio, diversi programmi potrebbero aver bisogno di uno strumento di conversione o di una funzione di reporting. Invece di integrare queste funzioni in ogni programma, possono essere integrate come servizi autonomi e rese accessibili tramite Web Services. Altri programmi possono quindi utilizzare il servizio Web appropriato per richiamare i servizi autonomi in base alle necessità. Ciò si traduce in applicazioni più piccole e semplici, più rapide da sviluppare e più facili da testare e gestire.
Fornitura di servizi
Le aziende che desiderano ottenere entrate dai dati e dai servizi di elaborazione, spesso utilizzano le fonti di dati come servizio aziendale che può essere fornito ai consumatori. I Web Services sono un meccanismo popolare per esporre tali servizi a sviluppatori esterni, tracciare l’utilizzo del servizio Web e generare attività fatturabili in base all’accesso al servizio Web.
Collegamento di programmi esistenti
I Web Services possono essere utilizzati per collegare i dati tra diverse piattaforme. Poiché tutte le applicazioni possono includere un componente di Web Services, ciò può trasformare qualsiasi programma in uno completamente interoperabile. L’inserimento di un’applicazione esistente o legacy in un servizio Web è un modo efficace per convertire un’applicazione più vecchia in un’applicazione con capacità di rete, che può modernizzarla senza doverla riprogrammare da zero.
Esempi di Web Services
I seguenti esempi mostrano come i Web Services vengono utilizzati in applicazioni reali:
- Google Search. Quando gli utenti di computer accedono al motore di ricerca Google, i loro termini di ricerca o query vengono passati al motore di ricerca Google. Il motore esegue la ricerca e restituisce i risultati della ricerca al browser Web dell’utente. L’utente seleziona quindi tra i e risultati di ricerca o inserisce una nuova query di ricerca per perfezionare e continuare la navigazione.
- Google Maps. Quando si utilizza Google Maps, gli utenti forniscono la propria posizione e la destinazione desiderata. Il servizio calcola il percorso più appropriato e offre indicazioni stradali e una mappa dettagliata consegnata al browser Web dell’utente. È possibile richiamare servizi aggiuntivi per aggiungere dati supplementari, come condizioni meteorologiche e del traffico.
- Amazon. Questo grande e noto sito di shopping consente agli utenti di specificare il tipo di prodotto, il modello, il produttore o altri dettagli che stanno cercando. Amazon visualizza le opzioni di prodotto disponibili e consente agli utenti di effettuare ordini e pagare utilizzando i Web Services di Amazon.
Questi sono alcuni dei tanti esempi di Web Services disponibili. Qualsiasi azienda con servizi di elaborazione o dati da offrire può esporre tali risorse tramite un’interfaccia o API di Web Services. Ciò può consentire a un’organizzazione di scambiare informazioni tra applicazioni aziendali, interagire con partner commerciali e utenti e fatturare l’accesso e l’utilizzo dei Web Services per generare entrate.
Vantaggi dei Web Services
I Web Services offrono molti vantaggi interessanti, come i seguenti:
- Semplicità. I Web Services utilizzano tecnologie standardizzate come WSDL, XML e HTTP.
Interoperabilità. La chiave dei Web Services è l’astrazione, che consente ai sistemi di interagire senza alcuna conoscenza dei sistemi o delle architetture sottostanti coinvolti. - Efficacia in termini di costi. La semplicità e le tecnologie consolidate coinvolte rendono i Web Services rapidi ed economici da creare, distribuire e gestire.
- Modularità e riutilizzabilità. I Web Services consentono a qualsiasi applicazione di utilizzare funzionalità e funzioni di routine come Web Services anziché incorporarle in ogni applicazione. Ciò si presta allo sviluppo di software modulare e riutilizzabile.
- Indipendenza. I Web Services mantengono poca o nessuna dipendenza tra il lato client e il lato server di uno scambio. Ciò rende i Web Services senza stato in un modo che consente interruzioni di rete e perdite di dati senza compromettere le prestazioni dell’applicazione.
- Sicurezza. I Web Services utilizzano autenticazione, autorizzazione, crittografia e altre misure di sicurezza per proteggere i dati trasmessi tra client e server.
Sfide dei Web Services
Con la proliferazione dei Web Services, le preoccupazioni includono le richieste complessive di larghezza di banda di rete e, per qualsiasi servizio particolare, l’effetto sulle prestazioni man mano che aumentano le richieste per quel servizio. Sono emersi diversi nuovi prodotti che consentono agli sviluppatori di software di creare o modificare applicazioni esistenti che possono essere pubblicate come applicazioni basate sul Web. Tuttavia, ci sono altri potenziali problemi con i Web Services, tra cui i seguenti:
- Connettività. I Web Services sono subordinati alla disponibilità di connettività di rete. Oltre alle limitazioni di larghezza di banda, problemi come l’affidabilità e la latenza della rete possono contribuire a problemi di prestazioni. E le interruzioni e i tempi di inattività della rete possono rendere un servizio Web non disponibile.
- Overhead. Sebbene i Web Services utilizzino livelli e protocolli di comunicazione standardizzati e consolidati, queste tecnologie introducono anche un overhead di elaborazione che può compromettere le prestazioni delle comunicazioni. Inoltre, il consumo di risorse associato ai Web Services può aumentare i costi e le spese operative.
- Complessità e compatibilità. I Web Services possono essere entità complesse da creare, implementare e gestire. Vari protocolli di comunicazione, formati di dati e precauzioni di sicurezza aumentano tale complessità. I Web Services sono fondamentalmente software con controllo delle versioni, che spesso richiedono alle applicazioni di aggiornare e potenziare nel tempo man mano che le versioni evolvono e crescono.
- Rischi per la sicurezza. Sebbene esistano strumenti di sicurezza per proteggere gli scambi di dati tramite i Web Services, tali misure di sicurezza devono essere implementate correttamente e testate a fondo per prevenire problemi di privacy, violazioni dei dati, uso non autorizzato e altri attacchi.
- Risoluzione dei problemi. I Web Services consentono la creazione di ambienti di comunicazione e scambio di dati più complessi. Ciò rende più difficile la risoluzione dei problemi perché possono sorgere problemi sul client, sul server, sulla rete o sul servizio Web stesso.
- Vendor lock-in. Quando si utilizza il servizio Web di un fornitore terzo, un’azienda può diventare dipendente da tale fornitore. Questo tipo di blocco del fornitore rende difficile o impossibile utilizzare Web Services alternativi in futuro.
SOAP vs. REST
I Web Services riguardano tutti l’accesso e lo scambio di informazioni. Questi servizi dipendono dai protocolli dati, le regole che definiscono come i dati vengono gestiti e spostati in modo che entrambe le parti di un collegamento di comunicazione possano comprenderli. SOAP e REST sono i due protocolli di scambio dati più diffusi.
SOAP
SOAP è altamente strutturato. Utilizza un formato dati XML e in genere HTTP o SMTP per la trasmissione dei dati. SOAP è con stato e utilizza WSDL per descrivere il modello di servizio Web che definisce come sono strutturate le sue richieste e risposte; include standard di sicurezza ben definiti.
I Web Services basati su SOAP sono più facili da utilizzare rispetto a REST. Coinvolgono più standard e supportano funzionalità avanzate come il calcolo distribuito. Tuttavia, i Web Services SOAP sono più complessi da sviluppare, implementare e supportare rispetto a REST.
REST
Al contrario, REST è un protocollo flessibile e senza stato che supporta lo scambio di dati in vari formati. REST è basato su oggetti e utilizza HTTP per processi chiave come DELETE, GET, POST e PUT. Ma REST definisce formalmente poco altro, consentendo trasferimenti di dati tramite testo normale, HTML, XML e JSON. REST è considerato un protocollo leggero, più facile da costruire e comprendere rispetto ai servizi SOAP. Tuttavia, REST è in genere limitato alle comunicazioni punto a punto e la mancanza di standard più approfonditi può portare a limitazioni di prestazioni e interoperabilità.
È importante notare che i protocolli SOAP e REST sono entrambi popolari e ampiamente utilizzati per i Web Services. La domanda non è quale sia il migliore, ma piuttosto quale protocollo sia più adatto al servizio Web in fase di sviluppo.
API vs. Web Services
Ci sono molte somiglianze tra Web Services e API. I termini sono spesso usati in modo intercambiabile, anche se tecnicamente è sbagliato.
- I Web Services sono software utilizzati per connettere sistemi e software attraverso una rete. Sono costruiti da protocolli e standard aperti e consolidati e sono in genere più pesanti e richiedono più larghezza di banda o overhead di elaborazione rispetto alle API.
- Le API sono meccanismi software utilizzati per connettere sistemi e software, indipendentemente dalla presenza di una rete; un’API può eseguire e connettere applicazioni in esecuzione sullo stesso hardware. Utilizzano un set di protocolli e definizioni che gli sviluppatori descrivono. Le API sono in genere più leggere e più efficienti in termini di risorse e larghezza di banda rispetto ai Web Services.
Esiste una notevole sovrapposizione tra Web Services e API. In sostanza, i Web Services sono un sottoinsieme di API. Un servizio Web è un tipo di API e la maggior parte dei Web Services fornisce un’API. Un modo per implementare un’API è come servizio Web, ma non tutte le API sono Web Services.