Web service: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
 
(170 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
Secondo la definizione data dalIn [[World Wide Web Consortium|W3Cinformatica]] un '''Web service''' ('''servizio web'''), secondo la definizione data dal [[World Wide Web Consortium]] (W3C), è un sistema [[software]] progettato per supportare l'[[interoperabilità]] tra diversi [[computer|elaboratori]] su di una medesima [[rete_informaticarete informatica|rete]]; caratteristica fondamentale di un Web Service è quella di offrire un'[[interfaccia]] software (descrittaoppure in un formato automaticamente elaborabile quale, ad esempio, ilcontesto [[WSDL]])sistema utilizzando la quale altri [[sistemadistribuito|sistemi]] possono interagire con il Web Service stesso attivando le operazioni descritte nell'interfaccia tramite appositi "messaggi" inclusi in una "busta" [[SOAP]]: tali messaggi sono, solitamente, trasportati tramite il [[protocollo]] [[HTTP]] e formattati secondo lo standard [[XMLdistribuito]].
 
== Storia ==
Tramite un'architettura basata sui [[World Wide Web|Web]] Service (chiamata, con terminologia [[lingua inglese|inglese]], ''[[Service oriented Architecture]] - SOA'') applicazioni software scritte in diversi [[linguaggio di programmazione|linguaggi di programmazione]] e implementate su diverse piattaforme [[hardware]] possono quindi essere utilizzate, tramite le interfacce che queste "espongono" pubblicamente e mediante l'utilizzo delle funzioni che sono in grado di effettuare (i "servizi" che mettono a disposizione) per lo scambio di informazioni e l'effettuazione di operazioni complesse (quali, ad esempio, la realizzazione di ''processi di business'' che coinvolgono più aree di una medesima azienda) sia su reti aziendali come anche su [[Internet]]: la possibilità dell'interoperabilità fra diversi software (ad esempio, tra [[Java_(linguaggio)|Java]] e [[Python]]) e diverse piattaforme hardware (come [[Microsoft Windows|Windows]] e [[Linux]]) è resa possibile dall'uso di standard "aperti" (per un concetto assimiliabile cfr. la voce "[[open source]]").
Il consorzio OASIS (''Organization for the Advancement of Structured Information Standards'') ed il W3C sono i principali responsabili dell'architettura e della standardizzazione dei Web service; per migliorare l'interoperabilità tra le diverse implementazioni dei Web service l'organizzazione [[WS-I]] sta inoltre sviluppando una serie di "profili" per meglio definire gli standard coinvolti.
 
== Descrizione ==
Il consorzio OASIS (''Organization for the Advancement of Structured Information Standards'') ed il [[World Wide Web Consortium]] sono i principali responsabili dell'architettura e della standardizzazione dei Web Service; per migliorare l'interoperabilità tra le diverse implementazioni dei Web Service l'organizzazione [[WS-I]] sta inoltre sviluppando una serie di "profili" per meglio definire gli standard coinvolti.
Tale caratteristica si ottiene associando all'applicazione un'[[interfaccia (informatica)|interfaccia]] software (descritta in un formato automaticamente elaborabile quale, ad es., il [[Web Services Description Language]]) che espone all'esterno il servizio/i associato/i e utilizzando la quale altri [[sistema|sistemi]] possono interagire con l'applicazione stessa attivando le operazioni descritte nell'interfaccia (''servizi'' o [[chiamata di procedura remota|richieste di procedure remote]]) tramite appositi "messaggi" di richiesta: tali messaggi di richiesta sono inclusi in una "busta" (la più famosa è [[SOAP]]), formattati secondo lo standard [[XML]], [[imbustamento|incapsulati]] e trasportati tramite i [[Protocollo di rete|protocolli]] del [[Web]] (solitamente [[Hypertext Transfer Protocol|HTTP]]), da cui appunto il nome ''Web service''. Di fatto dunque il ''web service'' consiste in una chiamata ad un servizio molto simile a una [[funzione (informatica)|funzione]], subroutine o [[metodo (informatica)|metodo]] scritta in maniera inusuale rispetto alla norma e con i suddetti metodi di chiamata, utili in termini di interoperabilità in un'architettura tipica complessa di tipo [[modulo (programmazione)|modulare]].
 
Proprio grazie all'utilizzo di standard basati su XML, tramite un'architettura basata sui [[World Wide Web|Web]] Service (chiamata, con terminologia [[lingua inglese|inglese]], ''[[Service oriented Architecture]] - SOA'') applicazioni software scritte in diversi [[linguaggio di programmazione|linguaggi di programmazione]] e implementate su diverse [[piattaforma (informatica)|piattaforme]] [[hardware]] possono quindi essere utilizzate, tramite le interfacce che queste "espongono" pubblicamente e mediante l'utilizzo delle funzioni che sono in grado di effettuare (i "servizi" che mettono a disposizione) per lo scambio di informazioni e l'effettuazione di operazioni complesse (quali, ad esempio, la realizzazione di ''processi di business'' che coinvolgono più aree di una medesima azienda) sia su reti aziendali come anche su [[Internet]]: la possibilità dell'[[interoperabilità]] fra diversi linguaggi di programmazione (ad esempio, tra [[Java (linguaggio di programmazione)|Java]] e [[Python]]) e diversi [[sistema operativo|sistemi operativi]] (come [[Microsoft Windows|Windows]] e [[Linux]]) è resa possibile dall'uso di [[Standard aperto|standard "aperti"]].
==Pila protocollare dei Web Service==
[[Image:webservices.png|right|Esempio di utilizzo dei protocolli per i Web Service]]
La pila protocollare dei Web Service è l'insieme dei [[protocollo|protocolli]] di rete utilizzati per definire, localizzare, realizzare e far interagire tra di loro i Web Service; è principalmente composta di quattro aree:
 
=== Caratteristiche ===
* Trasporto del servizio: responsabile per il trasporto dei messaggi tra le applicazioni in rete, include protocolli quali [[HTTP]], [[SMTP]], [[FTP]], [[XMPP]] ed il recente ''Blocks Extensible Exchange Protocol'' ([[BEEP]]).
Alcuni dei vantaggi che è possibile ottenere con l'utilizzo dei Web service sono i seguenti:
* XML Messaging: tutti i dati scambiati sono formattati mediante "tag" XML in modo che gli stessi possano essere utilizzati ad entrambi i capi della connessioni; il messaggio può essere codificato conformemente allo standard [[SOAP]], come anche utilizzare [[JAX-RPC]], [[XML-RPC]] o [[REST]].
*permettono l'interoperabilità tra diverse applicazioni software su diverse piattaforme hardware;
* Descrizione del servizio: l'interfaccia pubblica di un Web Service viene descritta tramite [[WSDL]] (''Web Services Description Language) un linguaggio basato su XML usato per la creazione di "documenti" descrittivi delle modalità di interfacciamento ed utilizzo del Web Service.
*utilizzano standard e protocolli "open"; i protocolli ed il formato dei dati è, ove possibile, in formato testuale, cosa che li rende di più facile comprensione ed utilizzo da parte degli sviluppatori;
* Elencazione dei servizi: la centralizzazione della descrizione e della localizzazione dei Web Service in un "registro" comune permette la ricerca ed il reperimento in maniera veloce dei Web Service disponibili in rete; a tale scopo viene attualmente utilizzato il protocollo [[UDDI]].
*mediante l'uso di [[Hypertext Transfer Protocol|HTTP]] per il trasporto dei messaggi, i Web service normalmente non necessitano di modifiche alle regole di sicurezza utilizzate come filtro sui [[firewall]];
*possono essere facilmente utilizzati, in combinazione l'uno con l'altro (indipendentemente da chi li fornisce e da dove vengono resi disponibili) per formare servizi "integrati" e complessi;
*consentono il riutilizzo di infrastrutture ed applicazioni già sviluppate e sono (relativamente) indipendenti da eventuali modifiche delle stesse;
*nascondono all'utente la complessità architetturale del [[framework]], offrendo in un'eventuale interfaccia (front end) il risultato dell'esecuzione del servizio (ad esempio i valori di determinati campi di una tabella in un'app).
 
Di contro, vi sono i seguenti aspetti da considerare:
Ulteriori protocolli [[standard]] utilizzati sono:
*attualmente non esistono standard consolidati per applicazioni critiche quali, ad esempio, le [[transazioni distribuite]];
*[[WS-Security]]: il protocollo ''Web Services Security protocol'' è stato adottato come standard OASIS; tale standard permette l'[[autenticazione]] degli utenti e la confidenzialità dei messaggi scambiati con l'interfaccia del Web Service
*le ''performance'' legate all'utilizzo dei Web service possono essere minori di quelle riscontrabili utilizzando approcci alternativi di [[distributed computing]] quali [[Remote Method Invocation|Java RMI]], [[CORBA]], o [[Distributed Component Object Model|DCOM]]:
*[[WS-Reliability]]: si tratta di specifiche basate su SOAP ed accettate come standard OASIS che soddisfano la richiesta di messaggi "affidabili" (''reliable''), richiesta critica per alcune delle applicazioni che utilizzano i Web Service (come, ad esempio, transazioni monetarie o applicazioni di [[E-commerce]]).
*L'uso dell'[[Hypertext Transfer Protocol|HTTP]] permette ai Web service di evitare le misure di sicurezza dei firewall (le cui regole sono stabilite spesso proprio per evitare le comunicazioni fra programmi "esterni" ed "interni" al firewall).
 
=== Ragioni dell'utilizzo ===
==Vantaggi dei Web Service==
La ragione principale per la creazione e l'utilizzo di Web service è il "disaccoppiamento" che l'interfaccia standard esposta dal Web service rende possibile fra il sistema utente ed il Web service stesso: modifiche a una o all'altra delle applicazioni possono essere attuate in maniera "trasparente" all'interfaccia tra i due sistemi; tale flessibilità consente la creazione di sistemi software complessi costituiti da componenti svincolati l'uno dall'altro e consente una forte riusabilità di codice ed applicazioni già sviluppate.
*permettono l'interoperabilità tra diverse applicazioni software su diverse piattaforme hardware
*utilizzano standard e protocolli "open"; i protocolli ed il formato dei dati è, ove possibile, in formato testuale, cosa che li rende di più facile comprensione ed utilizzo da parte degli sviluppatori
*mediante l'uso di [[HTTP]] per il trasporto dei messaggi i Web Service non necessitano, normalmente, che vengano effettuate modifiche alle regole di sicurezza utilizzate come filtro sui [[firewall]]
*possono essere facilmente utilizzati, in combinazione l'uno con l'altro (indipendentemente da chi li fornisce e da dove vengono resi disponibili) per formare servizi "integrati" e complessi.
*consentono il riutilizzo di infrastrutture ed applicazioni già sviluppate e sono (relativamente) indipendenti da eventuali modifiche delle stesse
 
I Web service hanno inoltre guadagnato consensi visto che, come protocollo di trasporto, possono utilizzare HTTP "over" [[Transmission Control Protocol|TCP]] sulla [[Porta (reti)|porta]] 80; tale porta è, normalmente, una delle poche (se non l'unica) lasciata "aperta" dai sistemi firewall al traffico di entrata ed uscita dall'esterno verso i sistemi aziendali e ciò in quanto su tale porta transita il traffico HTTP dei [[web browser]]: ciò consente l'utilizzo dei Web service senza modifiche sulle configurazioni di sicurezza dell'azienda (un aspetto che se da un lato è positivo solleva preoccupazioni concernenti la sicurezza).
==Svantaggi dei Web Service==
*attualmente non esistono standard consolidati per applicazioni critiche quali, ad esempio, le transazioni distribuite
*le [[performance]] legate all'utilizzo dei Web Service possono essere minori di quelle riscontrabili utilizzando approcci alternativi di [[distributed computing]] quali [[Java remote method invocation|Java RMI]], [[CORBA]], o [[Distributed component object model|DCOM]]
*L'uso dell'[[HTTP]] permette ai Web Service di evitare le misure di sicurezza dei firewall (le cui regole sono stabilite spesso proprio per evitare le comunicazioni fra programmi "esterni" ed "interni" al firewall).
 
Un'ultima ragione che ha favorito l'adozione ed il proliferare dei Web service è la mancanza, prima dello sviluppo di SOAP, di interfacce realmente funzionali per l'utilizzo di funzionalità distribuite in rete: [[EDIFACT|EDI]], [[Chiamata di procedura remota|RPC]], ed altri tipi di API (''[[Application Programming Interface]]'') erano e rimangono meno conosciute e di facile utilizzo rispetto all'architettura dei Web service.
==Perché creare un Web Service==
La ragione principale per la creazione e l'utilizzo di Web Service è il "disaccoppiamento" che l'interfaccia standard esposta dal Web Service rende possibile fra il sistema utente ed il Web Service stesso: modifiche ad una o all'altra delle applicazioni possono essere attuate in maniera "trasparente" all'interfaccia tra i due sistemi; tale flessibilità consente la creazione di sistemi software complessi costituiti da componenti svincolati l'uno dall'altro e consente una forte riusabilità di codice ed applicazioni già sviluppate.
 
=== Pila protocollare ===
I Web service hanno inoltre guadagnato consensi visto che, come protocollo di trasporto, possono utilizzare HTTP "over" [[Transmission Control Protocol|TCP]] sulla [[Porta (reti)|porta]] 80; tale porta è, normalmente, una delle poche (se non l'unica) lasciata "aperta" dai sistemi firewall al traffico di entrata ed uscita dall'esterno verso i sistemi aziendali e ciò in quanto su tale porta transita il traffico HTTP dei [[web browser]]: ciò consente l'utilizzo dei Web Service senza modifiche sulle configurazioni di sicurezza dell'azienda (un aspetto che se da un lato è positivo solleva preoccupazioni concernenti la sicurezza).
[[File:Webservices-en.svg|thumb|Esempio di utilizzo dei protocolli per i Web service]]
La pila protocollare dei Web service è l'insieme dei [[Protocollo di rete|protocolli di rete]] utilizzati per definire, localizzare, realizzare e far interagire tra di loro i Web service; è principalmente composta di quattro aree:
 
* ''Trasporto del servizio'': responsabile per il trasporto dei messaggi tra le applicazioni in rete, include protocolli quali [[Hypertext Transfer Protocol|HTTP]], [[Simple Mail Transfer Protocol|SMTP]], [[File Transfer Protocol|FTP]], [[Extensible Messaging and Presence Protocol|XMPP]] ed il recente ''Blocks Extensible Exchange Protocol'' ([[BEEP]]).
Un'ultima ragione che ha favorito l'adozione ed il proliferare dei Web Service è la mancanza, prima dello sviluppo di SOAP, di interfacce realmente funzionali per l'utilizzo di funzionalità distribuite in rete: [[EDIFACT|EDI]], [[Chiamata di procedura remota|RPC]], ed altri tipi di [[API]] (''Application Programming Interface'') erano e rimangono meno conosciute e di facile utilizzo che non l'architettura dei Web Service.
* ''XML Messaging'': tutti i dati scambiati sono formattati mediante "tag" XML in modo che gli stessi possano essere utilizzati ad entrambi i capi delle connessioni; il messaggio può essere codificato conformemente allo standard [[SOAP]], come anche utilizzare [[JAX-RPC]], [[XML-RPC]] o [[REST]].
* ''Descrizione del servizio'': l'interfaccia pubblica di un Web service viene descritta tramite [[Web Services Description Language|WSDL]] (''Web Services Description Language'') un linguaggio basato su XML usato per la creazione di "documenti" descrittivi delle modalità di interfacciamento ed utilizzo del Web service.
* ''Elencazione dei servizi'': la centralizzazione della descrizione e della localizzazione dei Web service in un "registro" comune permette la ricerca ed il reperimento in maniera veloce dei Web service disponibili in rete; a tale scopo viene attualmente utilizzato il protocollo [[Universal Description Discovery and Integration|UDDI]].
 
Ulteriori protocolli [[standard (informatica)|standard]] utilizzati sono:
*[[WS-Security]]: il protocollo ''Web Services Security protocol'' è stato adottato come standard OASIS; tale standard permette l'[[autenticazione]] degli utenti e la confidenzialità dei messaggi scambiati con l'interfaccia del Web service
*[[WS-Reliability]]: si tratta di specifiche basate su SOAP ed accettate come standard OASIS che soddisfano la richiesta di messaggi "affidabili" (''reliable''), richiesta critica per alcune delle applicazioni che utilizzano i Web service (come, ad esempio, transazioni monetarie o applicazioni di [[E-commerce]]).
 
==Voci correlate==
*[[Service-oriented architecture|SOA]]
*[[UDDI]]
*[[WSDL]]
*[[World Wide Web]]
*[[E-commerce]]
*[[Rete informatica]]
*[[SOAP]]
*[[Sistema distribuito]]
*[[Sistema informativo]]
*[[Universal Description Discovery and Integration]]
*[[World Wide Web]]
*[[Web Services Description Language]]
*[[Web Services Interoperability]]
*[[Service-oriented architecture]]
 
==Altri progetti==
==Collegamenti esterni==
{{interprogetto|preposizione=sul}}
 
==Collegamenti esterni==
*[http://www.oasis-open.org/ Organization for the Advancement of Structured Information Standards]
* {{Collegamenti esterni}}
*[http://www.w3.org/2002/ws/ Pagina sui Web Services del World Wide Web Consortium]
*{{cita web|http://www.oasis-open.org/|Consorzio OASIS}}
*[http://www.w3.org/2000/xp/Group/ XML Protocol Working Group (SOAP) sul sito del World Wide Web Consortium]
*[http{{cita web|https://www.w3.org/TR2002/ws-arch/|Pagina sui Web Servicesservice Architecturedel sulWorld sitoWide Web W3C]Consortium}}
*W3C: [https://www.w3.org/2000/xp/Group/ Gruppo di lavoro sull'XML (SOAP)]
*[http://www-130.ibm.com/developerworks/webservices/ Service-Oriented Architecture (SOA) e Web services]
*W3C: [https://www.w3.org/TR/ws-arch/ Architettura dei Web service]
*[http://www.oracle.com/technology/tech/webservices/index.html Oracle Web Services Technology Center]
*{{cita web|http://www-130.ibm.com/developerworks/webservices/|Service-Oriented Architecture (SOA) e Web service}}
*[http://conferences.computer.org/icws Conferenza Internazionale dell'IEEE sui Web Services]
*Oracle: [http://www.oracle.com/technology/tech/webservices/index.html Centro per la tecnologia dei Web service]
*[https://www.ieeecommunities.org/services IEEE Services Computing Community]
*{{cita web|http://conferences.computer.org/icws|Conferenza Internazionale dell'IEEE sui Web service}}
*[http://www.guru4.net/articoli/webservice-introduzione/ Introduzione ai Web Service con .NET]
*IEEE: {{collegamento interrotto|1=[https://www.ieeecommunities.org/services Comunità di Services Computing] |data=novembre 2017 |bot=InternetArchiveBot }}
*{{cita web | 1 = http://www.guru4.net/articoli/webservice-introduzione/ | 2 = Introduzione ai Web service con .NET | accesso = 2 agosto 2006 | dataarchivio = 17 luglio 2006 | urlarchivio = https://web.archive.org/web/20060717223210/http://www.guru4.net/articoli/webservice-introduzione/ | urlmorto = sì }}
*{{cita web|http://www.service-architecture.com/index.html|Web service e Service-Oriented Architecture}}
*{{cita web|http://www.occhioinformatico.it/formazione/11-how-to-tutorial/62-web-service-in-java.html|Web service in Java}}
 
{{Interfacce web}}
[[Categoria:Web Service]]
{{Controllo di autorità}}
{{Portale|internet|scienza e tecnica}}
 
[[Categoria:Web service| ]]
[[ca:Serveis web]]
[[da:Web service]]
[[de:Web Service]]
[[en:Web service]]
[[es:Servicio Web]]
[[fa:خدمات وب]]
[[fr:Service Web]]
[[he:Web service]]
[[hu:Webszolgáltatás]]
[[id:Web service]]
[[ja:Webサービス]]
[[ko:웹 서비스]]
[[nl:Webservice]]
[[pl:Web service]]
[[pt:Web service]]
[[ru:Веб-служба]]
[[sv:Webbtjänst]]
[[th:เว็บเซอร์วิส]]
[[vi:Dịch vụ web]]
[[zh:Web服务]]