Un servizio web (o servizio web ) è un protocollo di interfaccia per computer della famiglia delle tecnologie web che consente la comunicazione e lo scambio di dati tra applicazioni e sistemi eterogenei in ambienti distribuiti . Si tratta quindi di un insieme di funzionalità visualizzate su Internet o su una intranet , da e per applicazioni o macchine, senza intervento umano, in modo sincrono o asincrono. Il protocollo di comunicazione è definito nel framework dello standard SOAP nella firma del servizio esposto ( WSDL ). Attualmente, il protocollo di trasporto è principalmente HTTP . Il concetto è stato chiarito e implementato nell'ambito della Web Services Activity , al W3C , in particolare con il protocollo SOAP. Associato all'EDI (Electronic Data Interchange) , il consorzio ebXML lo ha utilizzato per automatizzare gli scambi business-to-business. Tuttavia, il concept si arricchisce con l'approfondimento delle nozioni di risorsa e stato, nell'ambito del modello REST , e l'approfondimento della nozione di servizio, con il modello SOA .
Nella sua presentazione più generale, un servizio web è rappresentato da un agente, prodotto utilizzando una tecnologia informatica specifica da un fornitore di servizi. Un richiedente, utilizzando un agente di richiesta, utilizza questo servizio. Il provider e il richiedente condividono la stessa semantica del servizio Web, mentre l'agente e il richiedente condividono la stessa descrizione del servizio per coordinare i messaggi scambiati.
Esistono diverse tecnologie dietro il termine servizi web:
Gli standard WS- * sono spesso criticati perché corrono il rischio di provocare una corsa alle prestazioni tecnologiche. Tuttavia, la loro solidità nel campo dei servizi tra professionisti è riconosciuta e rimangono ampiamente utilizzati. Quindi preferiamo farli evolvere.
Il World Wide Web è un'applicazione progettata secondo l'architettura REST . L'architettura del Web sostituisce quindi i concetti di applicazioni client e server con i concetti di agenti e risorse . Gli agenti interagiscono con le risorse per creare, leggere, modificare o eliminare una risorsa. Finora abbiamo parlato principalmente dell'interazione tra gli interpreti , principalmente browser con risorse.
Oggi parliamo sempre di più dell'interazione tra agenti delle risorse ; vale a dire la relazione tra le risorse: una risorsa diventa l'agente di un'altra risorsa, ma rimane essa stessa una risorsa accessibile da altri agenti. Questa è esattamente l'architettura descritta dall'esempio di implementazione dell'applicazione dei mashup .
I servizi Web quindi trattano con agenti di risorse in cui il classico modus operandi Web parla di agenti utente. Ma i due concetti si basano sulla stessa architettura: REST .
Non c'è quindi alcuna differenza fondamentale tra l'interazione di un browser con una risorsa e quella di un servizio web con una risorsa. La differenza principale risiede nel formato della rappresentazione dei dati: HTML per browser o agenti utente, XML o JSON per servizi web o agenti di risorse.
Possiamo quindi definire un servizio web come l'implementazione software di una risorsa, identificata da un URI e accessibile tramite HTTP . Gli agenti si preoccupano del contenuto, della rappresentazione del loro stato, non del tipo di contenuto. Dobbiamo quindi vedere i servizi web come un mezzo per manipolare le informazioni e non come un semplice fornitore di servizi.
I servizi Web WS- * denotano l'implementazione software delle specifiche WS- * e sono tutti basati su una serie di protocolli e standard di base utilizzati per lo scambio di dati tra applicazioni in ambienti eterogenei:
Questi servizi Web WS- * sono definiti anche in base al tipo di architettura SOA .
Il software scritto in vari linguaggi di programmazione e su varie piattaforme può utilizzare i servizi web WS- * per lo scambio di dati attraverso reti di computer come Internet . L' OASIS e il World Wide Web Consortium (W3C) stanno coordinando i comitati responsabili dell'architettura e della standardizzazione dei servizi web. Per migliorare l'interoperabilità tra le realizzazioni di servizi web, l'organizzazione WS-I ha sviluppato una serie di profili per evolvere i futuri standard coinvolti.
In base al protocollo HTTP , i servizi Web possono funzionare attraverso molti firewall senza richiedere modifiche alle regole di filtro .
Questa facilità di implementazione dei servizi web WS- * ha uno svantaggio: è più complesso implementare regole di sicurezza specifiche per i servizi web WS- * che su un server web classico.
I servizi Web implementano una logica di business resa consumabile dall'uso di standard (principalmente TCP / IP , URI , MIME , HTTP , SMTP , SOAP , TLS , ecc. Per il trasporto, quindi XML per il contenuto), che consente a qualsiasi tecnologia che utilizza questi standard in grado di sfruttarlo, facilitando così l' interoperabilità delle applicazioni.
La realizzazione di servizi web è giustificata dall'architettura service-oriented, ovvero dalla volontà di rendere accessibile un servizio che implementa una logica di business nascosta agli utenti.
Nel business- to- affari contratti di scambio di dati , come nel business to consumer commerce , un altro vantaggio per i quali sono impiegati i servizi web è il fatto che essi si basano sul HTTP protocollo (che utilizza la porta 80 per impostazione predefinita).). Per comprenderlo, è necessario tenere presente che molte aziende si sono protette utilizzando firewall che filtrano e bloccano gran parte del traffico Internet per motivi di sicurezza. In questo ambiente, molte (quasi tutte) porte sono chiuse al traffico in entrata e in uscita e gli amministratori di questi firewall non sono disposti ad aprirle. La porta 80, invece, è sempre aperta perché utilizzata dal protocollo HTTP utilizzato dai browser web . Con questo vantaggio, i servizi web rappresentano una sorta di tunneling .
I servizi Web possono essere distribuiti utilizzando il software del server delle applicazioni :