Web Services Description Language: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
.anacondabot (discussione | contributi)
Esempio di documento WSDL 2.0: Migliorato la pagina
 
(60 versioni intermedie di 39 utenti non mostrate)
Riga 1:
'''WSDL''' ([[acronimo]] diIl '''Web Services Description Language''' ('''WSDL''') è un [[Linguaggio formale (matematica)|linguaggio formale]] in formato [[XML]] utilizzato per la creazione di "documenti" per la descrizione di [[Web Serviceservice]].
 
== Descrizione ==
Mediante WSDL può essere, infatti, descritta l'[[interfaccia]] pubblica di un Web Service ovvero creata una descrizione, basata su XML, di come interagire con un determinato servizio: un "documento" WSDL contiene infatti, relativamente al Web Service descritto, informazioni su:
Mediante WSDL può essere infatti descritta l'[[Interfaccia (informatica)|interfaccia]] pubblica di un Web service (ovvero una descrizione basata su XML) che indica come interagire con un determinato servizio.
*''cosa'' può essere utilizzato (le "operazioni" messe a disposizione dal servizio);
*''come'' utilizzarlo (il [[protocollo]] di comunicazione da utilizzare per accedere al servizio, il formato dei messaggi accettati in [[Input/Output|input]] e restituiti in [[Input/Output|output]] dal servizio ed i [[dato|dati]] correlati) ovvero i "vincoli" (''bindings'' in [[lingua inglese|inglese]]) del servizio;
*''dove'' utilizzare il servizio (cosiddetto ''endpoint'' del servizio che solitamente corrisponde all'indirizzo - in formato [[Uniform Resource Identifier|URI]] - che rende disponibile il Web Service)
 
Un "documento" WSDL contiene infatti, relativamente al Web service descritto, informazioni su:
Le operazioni supportate dal Web Service ed i messaggi che è possibile scambiare con lo stesso sono descritti in maniera astratta e quindi collegati ad uno specifico [[protocollo di rete]] e ad uno specifico formato.
 
*''cosa'' può essere utilizzato (le "operazioni" messe a disposizione dal servizio)
Il WSDL è solitamente utilizzato in combinazione con [[SOAP]] e [[XML Schema]] per rendere disponibili Web Services su [[rete_informatica|reti]] aziendali o su [[internet]]: un programma [[client]] può, infatti, "leggere" il documento WSDL relativo ad un Web Service per determinare quali siano le funzioni messe a disposizione sul [[server]] e quindi utilizzare il protocollo SOAP per utilizzare una o più delle funzioni elencate dal WSDL.
*''come'' sfruttare tale raggruppamento (specificando il [[Protocollo di rete|protocollo]] di comunicazione da utilizzare per accedere al servizio, il formato dei messaggi accettati in [[Input/Output|input]] e restituiti in [[Input/Output|output]] dal servizio ed i [[dato|dati]] correlati) ovvero i "vincoli" ({{Inglese|bindings}}) del servizio;
*''dove'' si trova il servizio nella rete (cosiddetto ''endpoint'' o ''port'' del servizio che solitamente corrisponde all'indirizzo — in formato [[Uniform Resource Identifier|URI]] — che rende disponibile il Web service)
 
Le operazioni supportate dal Web service ed i messaggi che è possibile scambiare con lo stesso sono descritti in maniera astratta e quindi non collegati ad uno specifico [[protocollo di rete]] e ad uno specifico formato.
La versione 1.1 di WSDL non è stata adottata come [[standard]] dal [[World Wide Web Consortium]] (W3C), ma l'[[11 maggio]] [[2005]] è stata rilasciata la "bozza" della versione 2.0 che sarà invece adottata come standard ufficiale (in forma di "raccomandazione") dal W3C.
 
Il WSDL è solitamente utilizzato in combinazione con [[SOAP]] e [[XML Schema]] per rendere disponibili Web service su [[rete informatica|reti]] aziendali o su [[internet]]: un programma [[client]] può, infatti, "leggere" il documento WSDL relativo ad un Web service per determinare quali siano le funzioni messe a disposizione sul [[server]] e attraverso il protocollo SOAP utilizzare una o più delle funzioni elencate dal WSDL.
== Voci correlate ==
 
*[[Web Service]]
La versione 1.1 di WSDL non è stata adottata come [[Norma tecnica|standard]] dal [[World Wide Web Consortium]] (W3C).
*[[SOAP]]
 
Il 26 giugno 2007 la versione 2.0 è stata promossa a standard ufficiale (in forma di "raccomandazione") dal W3C.
 
== Stili e codifiche ==
Un documento WSDL può essere caratterizzato da quattro distinte combinazioni di stili e codifiche:<ref name="ibm">{{cita web|url=https://www.ibm.com/developerworks/library/ws-whichwsdl/|editore=IBM|autore=Russel Butek|lingua=en|titolo=Which style of WSDL should I use?|data=31 ottobre 2003|accesso=10 settembre 2018|urlarchivio=https://web.archive.org/web/20180823041143/https://www.ibm.com/developerworks/library/ws-whichwsdl/|dataarchivio=23 agosto 2018|urlmorto=no}}</ref><ref>{{cita web|url=http://www.html.it/articoli/wsdl-stili-e-codifiche-4/|titolo=WSDL: stili e codifiche|sito=HTML.it|autore=Marco Parente|urlarchivio=https://web.archive.org/web/20140122231827/http://www.html.it/articoli/wsdl-stili-e-codifiche-4/|dataarchivio=22 gennaio 2014|urlmorto=no}}</ref>
*''RPC/encoded'': ha una struttura molto semplice, ma non è approvato dallo standard [[WS-I]] ed è complesso da validare.
*''RPC/literal'': è di nuovo molto semplice ed è privo di informazioni di codifica sui tipi. Soddisfa inoltre le specifiche WS-I, ma resta complesso da validare.
*''Document/encoded'': non è conforme alle specifiche WS-I e non è praticamente mai utilizzato.
*''Document/literal'': anche qui mancano le informazioni di codifica sui tipi ed è conforme alle specifiche WS-I (con alcune restrizioni). Può inoltre essere facilmente controllato con un [[Validatore (informatica)|validatore]] XML. Tuttavia, la struttura del WSDL diventa più complessa e verbosa. Infine, nel messaggio SOAP non è prevista l'indicazione del metodo utilizzato, per cui può risultare più complesso (o impossibile) capire quale operazione è richiesta dal client.
 
== Esempio di documento WSDL 2.0 ==
<syntaxhighlight lang="xml" line="1" copy=1>
<?xml version="1.0" encoding="UTF-8"?>
<description xmlns="http://www.w3.org/ns/wsdl"
xmlns:tns="http://www.example.com/wsdl20sample"
xmlns:whttp="http://www.w3.org/ns/wsdl/http"
xmlns:wsoap="http://www.w3.org/ns/wsdl/soap"
targetNamespace="http://www.example.com/wsdl20sample">
 
<!-- Abstract types -->
<types>
<xs:schema xmlns="http://www.example.com/wsdl20sample"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/wsdl20sample">
<xs:element name="request">
<xs:complexType>
<xs:sequence>
<xs:element name="header" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="body" type="xs:anyType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="method" type="xs:string" use="required"/>
<xs:attribute name="uri" type="xs:anyURI" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="response">
<xs:complexType>
<xs:sequence>
<xs:element name="header" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="body" type="xs:anyType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="status-code" type="xs:anySimpleType" use="required"/>
<xs:attribute name="response-phrase" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
</types>
 
<!-- Abstract interfaces -->
<interface name="RESTfulInterface">
<fault name="ClientError" element="tns:response"/>
<fault name="ServerError" element="tns:response"/>
<fault name="Redirection" element="tns:response"/>
<operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out">
<input messageLabel="GetMsg" element="tns:request"/>
<output messageLabel="SuccessfulMsg" element="tns:response"/>
</operation>
<operation name="Post" pattern="http://www.w3.org/ns/wsdl/in-out">
<input messageLabel="PostMsg" element="tns:request"/>
<output messageLabel="SuccessfulMsg" element="tns:response"/>
</operation>
<operation name="Put" pattern="http://www.w3.org/ns/wsdl/in-out">
<input messageLabel="PutMsg" element="tns:request"/>
<output messageLabel="SuccessfulMsg" element="tns:response"/>
</operation>
<operation name="Delete" pattern="http://www.w3.org/ns/wsdl/in-out">
<input messageLabel="DeleteMsg" element="tns:request"/>
<output messageLabel="SuccessfulMsg" element="tns:response"/>
</operation>
</interface>
 
<!-- Concrete Binding Over HTTP -->
<binding name="RESTfulInterfaceHttpBinding" interface="tns:RESTfulInterface"
type="http://www.w3.org/ns/wsdl/http">
<operation ref="tns:Get" whttp:method="GET"/>
<operation ref="tns:Post" whttp:method="POST"
whttp:inputSerialization="application/x-www-form-urlencoded"/>
<operation ref="tns:Put" whttp:method="PUT"
whttp:inputSerialization="application/x-www-form-urlencoded"/>
<operation ref="tns:Delete" whttp:method="DELETE"/>
</binding>
<!-- Concrete Binding with SOAP-->
<binding name="RESTfulInterfaceSoapBinding" interface="tns:RESTfulInterface"
type="http://www.w3.org/ns/wsdl/soap"
wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
<operation ref="tns:Get" />
<operation ref="tns:Post" />
<operation ref="tns:Put" />
<operation ref="tns:Delete" />
</binding>
<!-- Web Service offering endpoints for both the bindings-->
<service name="RESTfulService" interface="tns:RESTfulInterface">
<endpoint name="RESTfulServiceRestEndpoint"
binding="tns:RESTfulInterfaceHttpBinding"
address="http://www.example.com/rest/"/>
<endpoint name="RESTfulServiceSoapEndpoint"
binding="tns:RESTfulInterfaceSoapBinding"
address="http://www.example.com/soap/"/>
</service>
</description>
</syntaxhighlight>
 
== Note ==
<references/>
 
== Voci correlate ==
*[[Web service]]
*[[SOAP]]
*[[UDDI]]
*[[Web Application Description Language]]
*[[WS-I Basic Profile]]
*[[Business Process Execution Language]]
 
== Collegamenti esterni ==
* [http{{Cita web|https://www.w3.org/TR/wsdl |Specifiche WSDL 1.1]}}
* [http{{Cita web|https://www.w3.org/2002TR/ws/descwsdl20-primer/|WSDL Web2.0 ServicesSpecification Part 0: DescriptionPrimer Working(Latest Group]Version)}}
* [http{{Cita web|https://www.w3.org/2000TR/xpwsdl20/|WSDL 2.0 Specification Part 1: XMLCore protocol(Latest activity]Version)}}
* {{Cita web|https://www.w3.org/TR/wsdl20-adjuncts/|WSDL 2.0 Specification Part 2: Adjuncts (Latest Version)}}
* [http://www.mgateway.com/wsdlClient.htm WSDL Validator]
* {{Cita web|https://www.w3.org/2002/ws/desc/|Web Services Description Working Group}}
* [http://www.w3schools.com/wsdl/default.asp WSDL tutorial]
* {{Cita web|https://www.w3.org/2000/xp/|XML protocol activity}}
* {{Cita web|http://www.validwsdl.com/|WSDL Validator}}
 
{{Portale|internet}}
[[Categoria:Web Service]]
[[Categoria:Standard W3C]]
[[Categoria:Standard XML]]
[[Categoria:Acronimi]]
 
[[Categoria:Web service]]
[[de:Web Services Description Language]]
[[Categoria:Standard W3C]]
[[en:Web Services Description Language]]
[[Categoria:Standard informatici basati su XML]]
[[es:WSDL]]
[[fr:Web Services Description Language]]
[[he:Web Services Description Language]]
[[hu:Webszolgáltatás leíró nyelv]]
[[id:WSDL]]
[[ja:Web Service Definition Language]]
[[nl:Web Services Definition Language]]
[[no:WSDL]]
[[pl:Web Services Description Language]]
[[ru:WSDL]]
[[sv:WSDL]]
[[zh:WSDL]]