SlideShare a Scribd company logo
Un tutorial veloce per WSDL
Liberamente estratto e sintetizzato da
WSDL-Tutorial (http://www.w3schools.com/wsdl)
Introduzione
WSDL è un linguaggio basato su XML per descrivere i servizi Web e le modalità per accedervi.
Prima di apprestarsi alla lettura di questo tutorial si devono conoscere i seguenti argomenti:XML,
XML Schema, XML Namespace.
WSDL sta per linguaggio di descrizione per Web Service (Web Service Description Language). Un
documento WSDL è un documento XML in quanto WSDL è basto su XML. WSDL è usato per
descrivere i servizi ma anche per localizzarli. WSDL specifica la locazione del servizio e le
operazioni (o i metodi) che questo offre.WSDL è una raccomandazione del W3C.
Documenti WSDL
Un documento WSDL è un semplice documento XML che contiene un insieme di definizioni per
descrivere il servizio.
La struttura di un documento WSDL
Gli elementi più importanti usati da WSDL per descrivere un servizio sono i seguenti
    • <types>: i tipi di dato usati dal servizio.
    • <message>: i messaggi usati dal web service.
    • <portType>: le operazioni eseguite dal servizio.
    • <binding>: i protocolli di comunicazione usati dal servizio.
La struttura principale del documento è simile a quella presentata nel seguente listato:

<definitions>

<types>
      definizione dei tipi....
</types>

<message>
      definizione di un messaggio....
</message>

<portType>
      definizione di un port....
</portType>

<binding>
      definifinizione di un binding...
</binding>

</definitions>

Un documento WSDL può anche contenere altri elementi come elementi di estensione e un
elemento del servizio che dà la possibilità di raggruppare le definizioni di diversi web service in un
solo documento WSDL.
Port WSDL
L'elemento <portType> è il più importante in un documento WSDL: descrive il servizio, le
operazioni che possono essere eseguite e i messaggi che sono coinvolti in queste operazioni.
L'elemento <portType> può essere paragonato ad una libreria di funzioni (o un modulo, o una
classe) in un tradizionale linguaggio di programmazione.
Messaggi WSDL
L'elemento <message> definisce gli elementi di dati di una operazione.
Ogni messaggio può essere costituito da una o più parti. Le parti possono essere paragonate a dei
parametri di una chiamata di funzione in un linguaggio di programmazione tradizionale.
Tipi WSDL
L'elemento <types> definisce i tipi di dato usati nel web service: per la massima compatibilità tra le
piattaforme WSDL usa XML Schema per definire i tipi di dato.
Binding WSDL
L'elemento <binding> definisce il formato del messaggio ed i dettagli del protocollo per ogni Port.
Esempio di WSDL

<message name="getTermRequest">
      <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
      <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
      <operation name="getTerm">
            <input message="getTermRequest"/>
            <output message="getTermResponse"/>
      </operation>
</portType>

In questo esempio l'elemento portType definisce un “glossaryTerm” come nome del port e
“getTerm” come nome dell'operazione. L'operazione “getTerm” ha un messaggio di input chiamato
“getTermRequest” e un messaggio di output chiamato “getTermResponse”. Gli elementi <message>
definisco le parti di ogni messaggio e i tipi di dato ad esse associato.
Confrontando questo esempio con un lingaggio di programmazione tradizionale, “glossaryTerm”
risulta essere una libreria di funzioni, “getTerm” una funzione con “getTermRequest” come
parametro di input e “getTermResponse” come parametro di output.
Port WSDL
Un port WSDL descrive le interfacce ( le operazioni consentite) presentate da un web service.
Il port definisce un punto di connessione con il servizio. Un port può essere visto come una libreria
di funzioni e ogni sua operazione come una funzione.
Tipi di Operazioni
Il tipo di operazione Request-Response è il più comune in WSDL ma non è l'unico supportato.
     • One-Way: L'operazione può ricevere una richiesta ma non ritorna nessuna risposta
     • Request-Response: L'operazione può ricevere delle richieste e ritornerà una risposta.
     • Solicit-Response: L'operazione può spedire una richiesta e attendere per una risposta.
     • Notification: L'operazione può spedire un messaggio ma non attenderà una risposta.
Operazioni One-Way
<message name="newTermValues">
      <part name="term" type="xs:string"/>
      <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
      <operation name="setTerm">
            <input name="newTerm" message="newTermValues"/>
      </operation>
</portType >

Nell'esempio il porto “glossaryTerms” definisce un'operazione one-way chiamata “setTerm”.
L'operazione “setTerm” accetta messaggi di input con nuovi termini del glossario, usando un
messaggio “newTermValues” con parametri di input “term” e “value”. Non è stato definito nessun
output per questa operazione.
Operazioni Request-Response

<message name="getTermRequest">
      <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
      <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
      <operation name="getTerm">
            <input message="getTermRequest"/>
            <output message="getTermResponse"/>
      </operation>
</portType>

Nell'esempio il port “glossaryTerms” definisce una operazione Request-Response chiamata
“getTerm”.L'operazione “getTerm” richiede un messaggio di input chiamato “getTermRequest”,con
un parametro chiamato “term”,e ritorna un messaggio di output chiamato “getTermResponse”, con
un parametro chiamato “value”.
Binding WSDL
Un binding WSDL definisce il formato del messaggio e i dettagli sul protocollo per un servizio
web.
Binding con SOAP

<message name="getTermRequest">
      <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
      <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
      <operation name="getTerm">
            <input message="getTermRequest"/>
            <output message="getTermResponse"/>
      </operation>
</portType>

<binding type="glossaryTerms" name="b1">
      <soap:binding style="document” transport="http://schemas.xmlsoap.org/soap/
http" />
      <operation>
            <soap:operation soapAction="http://example.com/getTerm"/>
            <input><soap:body use="literal"/></input>
            <output><soap:body use="literal"/></output>
      </operation>
</binding>

L'elemento <binging> ha due attributi: name e type. L'attributo name ( si può usare qualsiasi nome
si voglia) definisce il nome del binding mentre l'attributo type punta al port a cui si riferisce il
binding, in questo caso “glossaryTerms”.
L'elemento soap:binding ha due attributi: style e transport. L'attributo style può valere o “rpc”
(remote procedure call) oppure “document” (in questo caso abbiamo usato “document”) mentre
l'attributo transport definisce il protocollo SOAP da utilizzare (in questo caso usiamo HTTP).
L'elemento operation definisce ogni operazioni che il port espone (contiene). Per ogni operazione
deve essere definita la SOAP action corrispondente e si deve inoltre specificare come gli input e gli
output devono essere codificati (in questo caso abbiamo usato “literal”.
WSDL e UDDI
Universal Description, Discovery e Integration (UDDI) è un servizio di directory in cui le imprese
possono registrarsi e cercare i servizi Web. UDDI è framework indipendente dalla piattaform per la
descrizione dei servizi, il discovery delle imprese, e per l'integrazione dei servizi imprenditoriali
tramite Internet. UDDI è una directory per immagazzinare informazioni sui servizi e le interfacce
dei web service scritte in WSDL. UDDI comunica tramite SOAP ed è costruita all'interno della
piattaforma Microsoft .NET.
UDDI usa gli standard del W3C (World Wide Web Consortium) e dell'IETF (Internet Engineering
Task Force) come XML, SOAP, HTTP e DNS e inoltre sfrutta WSDL per descrivere le interfacce
dei servizi.
UDDI è utile per trovare l'impresa giusta tra i milioni di imprese online, per definire come stabilire
il commercio una volta trovata l'impresa, raggiungere nuovi consumatori e migliorare l'accesso di
quelli già acquisiti, risolvere
Oltre 200 compagnie già sono membri della comunità UDDI.

More Related Content

Viewers also liked

TWB - Canada presentation
TWB - Canada presentationTWB - Canada presentation
TWB - Canada presentation
guest7f8e87b
 
Sviluppo e Organizzazione
Sviluppo e OrganizzazioneSviluppo e Organizzazione
Sviluppo e Organizzazione
Francesco Picconi (MSc,Dr)
 
Ada it#09 pengunaan pdf
Ada it#09   pengunaan pdfAda it#09   pengunaan pdf
Ada it#09 pengunaan pdfazlipaat
 
Pediatric Eye Conditions In Wisconsins Preschool Population
Pediatric Eye Conditions In Wisconsins Preschool PopulationPediatric Eye Conditions In Wisconsins Preschool Population
Pediatric Eye Conditions In Wisconsins Preschool Population
wcbvi
 
Windows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetWindows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudet
Vaihde 7
 
Ict4 d rhul talk
Ict4 d rhul talkIct4 d rhul talk
Ict4 d rhul talk
Hugh Shanahan
 
Openid+Opensocial
Openid+OpensocialOpenid+Opensocial
Openid+Opensocial
Sebastiano Merlino (eTr)
 
Presentación de Servicios AG Sustentable
Presentación de Servicios AG SustentablePresentación de Servicios AG Sustentable
Presentación de Servicios AG Sustentable
davosconsultores
 
Formato de clase 2012 8th-9th advice&suggestion
Formato de clase 2012  8th-9th advice&suggestionFormato de clase 2012  8th-9th advice&suggestion
Formato de clase 2012 8th-9th advice&suggestionEvelin Peña
 
HyEnergy Theoretical Concept for a Retail Consumer Model
HyEnergy Theoretical Concept for a Retail Consumer ModelHyEnergy Theoretical Concept for a Retail Consumer Model
HyEnergy Theoretical Concept for a Retail Consumer Model
Dorina M. Morcan
 
Tips for UXD that works
Tips for UXD that worksTips for UXD that works
Tips for UXD that works
Albert Wang
 
Dapat Cms
Dapat CmsDapat Cms
Dapat Cms
azlipaat
 
Formato de clase 8y9 acronyms
Formato de clase 8y9 acronymsFormato de clase 8y9 acronyms
Formato de clase 8y9 acronyms
Evelin Peña
 
Advice presentation dr house
Advice presentation dr houseAdvice presentation dr house
Advice presentation dr house
Evelin Peña
 
Formato de clase 6y7 simple past
Formato de clase 6y7 simple pastFormato de clase 6y7 simple past
Formato de clase 6y7 simple past
Evelin Peña
 
Sawsdl Restriced
Sawsdl RestricedSawsdl Restriced
Sawsdl Restriced
Sebastiano Merlino (eTr)
 
Windows 7 Käyttöönottoprojekti
Windows 7 KäyttöönottoprojektiWindows 7 Käyttöönottoprojekti
Windows 7 Käyttöönottoprojekti
Vaihde 7
 
Presentazione Progetto CRio
Presentazione Progetto CRioPresentazione Progetto CRio
Presentazione Progetto CRio
Sebastiano Merlino (eTr)
 
E
EE

Viewers also liked (20)

TWB - Canada presentation
TWB - Canada presentationTWB - Canada presentation
TWB - Canada presentation
 
Sviluppo e Organizzazione
Sviluppo e OrganizzazioneSviluppo e Organizzazione
Sviluppo e Organizzazione
 
Ada it#09 pengunaan pdf
Ada it#09   pengunaan pdfAda it#09   pengunaan pdf
Ada it#09 pengunaan pdf
 
Pediatric Eye Conditions In Wisconsins Preschool Population
Pediatric Eye Conditions In Wisconsins Preschool PopulationPediatric Eye Conditions In Wisconsins Preschool Population
Pediatric Eye Conditions In Wisconsins Preschool Population
 
Windows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudetWindows 7 - uudet ominaisuudet
Windows 7 - uudet ominaisuudet
 
Ict4 d rhul talk
Ict4 d rhul talkIct4 d rhul talk
Ict4 d rhul talk
 
Openid+Opensocial
Openid+OpensocialOpenid+Opensocial
Openid+Opensocial
 
Presentación de Servicios AG Sustentable
Presentación de Servicios AG SustentablePresentación de Servicios AG Sustentable
Presentación de Servicios AG Sustentable
 
Formato de clase 2012 8th-9th advice&suggestion
Formato de clase 2012  8th-9th advice&suggestionFormato de clase 2012  8th-9th advice&suggestion
Formato de clase 2012 8th-9th advice&suggestion
 
HyEnergy Theoretical Concept for a Retail Consumer Model
HyEnergy Theoretical Concept for a Retail Consumer ModelHyEnergy Theoretical Concept for a Retail Consumer Model
HyEnergy Theoretical Concept for a Retail Consumer Model
 
Tips for UXD that works
Tips for UXD that worksTips for UXD that works
Tips for UXD that works
 
Dapat Cms
Dapat CmsDapat Cms
Dapat Cms
 
Formato de clase 8y9 acronyms
Formato de clase 8y9 acronymsFormato de clase 8y9 acronyms
Formato de clase 8y9 acronyms
 
Advice presentation dr house
Advice presentation dr houseAdvice presentation dr house
Advice presentation dr house
 
sukses bekerja
sukses bekerjasukses bekerja
sukses bekerja
 
Formato de clase 6y7 simple past
Formato de clase 6y7 simple pastFormato de clase 6y7 simple past
Formato de clase 6y7 simple past
 
Sawsdl Restriced
Sawsdl RestricedSawsdl Restriced
Sawsdl Restriced
 
Windows 7 Käyttöönottoprojekti
Windows 7 KäyttöönottoprojektiWindows 7 Käyttöönottoprojekti
Windows 7 Käyttöönottoprojekti
 
Presentazione Progetto CRio
Presentazione Progetto CRioPresentazione Progetto CRio
Presentazione Progetto CRio
 
E
EE
E
 

Similar to Fast Wsdl Tutorial

Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo IntegratiStudio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo IntegratiGiusy E Marco Tutone-Calandra
 
Composite Application
Composite ApplicationComposite Application
Composite Apps
Composite AppsComposite Apps
Composite Apps
Stefano Mastella
 
Web services
Web servicesWeb services
Web services
Franco Morelli
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web Services
Marco Livraghi
 
Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1
pma77
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneodgaglioti
 
phpday 2006 - WS in PHP
phpday 2006 - WS in PHPphpday 2006 - WS in PHP
phpday 2006 - WS in PHP
Gaetano Giunta
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveEmanuele Della Valle
 
OWL-S Restricted
OWL-S RestrictedOWL-S Restricted
OWL-S Restricted
Dario Mazza
 
Owl S Restricted
Owl S RestrictedOwl S Restricted
Owl S Restricted
Sebastiano Merlino (eTr)
 
SAWSDL Restriced
SAWSDL RestricedSAWSDL Restriced
SAWSDL Restriced
Dario Mazza
 
Sistemi distribuiti
Sistemi distribuitiSistemi distribuiti
Sistemi distribuiti
Valeria Gennari
 
2 Protocolli Applicativi
2 Protocolli Applicativi2 Protocolli Applicativi
2 Protocolli Applicativiacapone
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
Marco Breveglieri
 
Service Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media WikiService Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media Wiki
Matteo Busanelli
 
Come funziona la navigazione Web
Come funziona la navigazione WebCome funziona la navigazione Web
Come funziona la navigazione Webextrategy
 

Similar to Fast Wsdl Tutorial (20)

Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo IntegratiStudio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
Studio e realizzazione di Web Services in Ambienti di Sviluppo Integrati
 
Composite Application
Composite ApplicationComposite Application
Composite Application
 
Composite Apps
Composite AppsComposite Apps
Composite Apps
 
Web services
Web servicesWeb services
Web services
 
Introduzione ai Web Services
Introduzione ai Web ServicesIntroduzione ai Web Services
Introduzione ai Web Services
 
Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1Web service architetture e standard - Tesi - cap1
Web service architetture e standard - Tesi - cap1
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneo
 
phpday 2006 - WS in PHP
phpday 2006 - WS in PHPphpday 2006 - WS in PHP
phpday 2006 - WS in PHP
 
TESIPOLI
TESIPOLITESIPOLI
TESIPOLI
 
Rubrica pubblica ateneo
Rubrica pubblica ateneoRubrica pubblica ateneo
Rubrica pubblica ateneo
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettive
 
OWL-S Restricted
OWL-S RestrictedOWL-S Restricted
OWL-S Restricted
 
Owl S Restricted
Owl S RestrictedOwl S Restricted
Owl S Restricted
 
SAWSDL Restriced
SAWSDL RestricedSAWSDL Restriced
SAWSDL Restriced
 
Sistemi distribuiti
Sistemi distribuitiSistemi distribuiti
Sistemi distribuiti
 
Spcoop.ver 1.4
Spcoop.ver 1.4Spcoop.ver 1.4
Spcoop.ver 1.4
 
2 Protocolli Applicativi
2 Protocolli Applicativi2 Protocolli Applicativi
2 Protocolli Applicativi
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 
Service Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media WikiService Registry Repository Opensource implementato su Semantic Media Wiki
Service Registry Repository Opensource implementato su Semantic Media Wiki
 
Come funziona la navigazione Web
Come funziona la navigazione WebCome funziona la navigazione Web
Come funziona la navigazione Web
 

More from Sebastiano Merlino (eTr)

How to build SOLID code
How to build SOLID codeHow to build SOLID code
How to build SOLID code
Sebastiano Merlino (eTr)
 
Multithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaMultithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e Asincronia
Sebastiano Merlino (eTr)
 
Asterisk
AsteriskAsterisk
Biomeccatronica
BiomeccatronicaBiomeccatronica
Biomeccatronica
Sebastiano Merlino (eTr)
 
Bash programming
Bash programmingBash programming
Bash programming
Sebastiano Merlino (eTr)
 
Lezione Uno Pratica
Lezione Uno PraticaLezione Uno Pratica
Lezione Uno Pratica
Sebastiano Merlino (eTr)
 
Lezione Tre Pratica
Lezione Tre PraticaLezione Tre Pratica
Lezione Tre Pratica
Sebastiano Merlino (eTr)
 
Lezione Quattro
Lezione QuattroLezione Quattro
Lezione Quattro
Sebastiano Merlino (eTr)
 
Lezione Due Pratica
Lezione Due PraticaLezione Due Pratica
Lezione Due Pratica
Sebastiano Merlino (eTr)
 
Lezione Cinque
Lezione CinqueLezione Cinque
Lezione Cinque
Sebastiano Merlino (eTr)
 
Wsmo Restricted
Wsmo RestrictedWsmo Restricted
Wsmo Restricted
Sebastiano Merlino (eTr)
 
Owl Guide Resticted
Owl Guide RestictedOwl Guide Resticted
Owl Guide Resticted
Sebastiano Merlino (eTr)
 
Lezione Tre
Lezione TreLezione Tre
Linux & Open Source - Alternative Software
Linux & Open Source - Alternative SoftwareLinux & Open Source - Alternative Software
Linux & Open Source - Alternative Software
Sebastiano Merlino (eTr)
 
Linux & Open Source - Lezione 2 Supporto
Linux & Open Source - Lezione 2 SupportoLinux & Open Source - Lezione 2 Supporto
Linux & Open Source - Lezione 2 Supporto
Sebastiano Merlino (eTr)
 
Linux & Open Source - Lezione 2
Linux & Open Source - Lezione 2Linux & Open Source - Lezione 2
Linux & Open Source - Lezione 2
Sebastiano Merlino (eTr)
 
Linux & Open Source - Lezione 1 Supporto
Linux & Open Source - Lezione 1 SupportoLinux & Open Source - Lezione 1 Supporto
Linux & Open Source - Lezione 1 Supporto
Sebastiano Merlino (eTr)
 

More from Sebastiano Merlino (eTr) (20)

How to build SOLID code
How to build SOLID codeHow to build SOLID code
How to build SOLID code
 
Multithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaMultithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e Asincronia
 
Asterisk
AsteriskAsterisk
Asterisk
 
Biomeccatronica
BiomeccatronicaBiomeccatronica
Biomeccatronica
 
Bash programming
Bash programmingBash programming
Bash programming
 
Lezione Uno Pratica
Lezione Uno PraticaLezione Uno Pratica
Lezione Uno Pratica
 
Lezione Tre Pratica
Lezione Tre PraticaLezione Tre Pratica
Lezione Tre Pratica
 
Lezione tre
Lezione treLezione tre
Lezione tre
 
Lezione Quattro
Lezione QuattroLezione Quattro
Lezione Quattro
 
Lezione Due Pratica
Lezione Due PraticaLezione Due Pratica
Lezione Due Pratica
 
Lezione Cinque
Lezione CinqueLezione Cinque
Lezione Cinque
 
Lezione uno
Lezione unoLezione uno
Lezione uno
 
Lezione due
Lezione dueLezione due
Lezione due
 
Wsmo Restricted
Wsmo RestrictedWsmo Restricted
Wsmo Restricted
 
Owl Guide Resticted
Owl Guide RestictedOwl Guide Resticted
Owl Guide Resticted
 
Lezione Tre
Lezione TreLezione Tre
Lezione Tre
 
Linux & Open Source - Alternative Software
Linux & Open Source - Alternative SoftwareLinux & Open Source - Alternative Software
Linux & Open Source - Alternative Software
 
Linux & Open Source - Lezione 2 Supporto
Linux & Open Source - Lezione 2 SupportoLinux & Open Source - Lezione 2 Supporto
Linux & Open Source - Lezione 2 Supporto
 
Linux & Open Source - Lezione 2
Linux & Open Source - Lezione 2Linux & Open Source - Lezione 2
Linux & Open Source - Lezione 2
 
Linux & Open Source - Lezione 1 Supporto
Linux & Open Source - Lezione 1 SupportoLinux & Open Source - Lezione 1 Supporto
Linux & Open Source - Lezione 1 Supporto
 

Fast Wsdl Tutorial

  • 1. Un tutorial veloce per WSDL Liberamente estratto e sintetizzato da WSDL-Tutorial (http://www.w3schools.com/wsdl) Introduzione WSDL è un linguaggio basato su XML per descrivere i servizi Web e le modalità per accedervi. Prima di apprestarsi alla lettura di questo tutorial si devono conoscere i seguenti argomenti:XML, XML Schema, XML Namespace. WSDL sta per linguaggio di descrizione per Web Service (Web Service Description Language). Un documento WSDL è un documento XML in quanto WSDL è basto su XML. WSDL è usato per descrivere i servizi ma anche per localizzarli. WSDL specifica la locazione del servizio e le operazioni (o i metodi) che questo offre.WSDL è una raccomandazione del W3C. Documenti WSDL Un documento WSDL è un semplice documento XML che contiene un insieme di definizioni per descrivere il servizio. La struttura di un documento WSDL Gli elementi più importanti usati da WSDL per descrivere un servizio sono i seguenti • <types>: i tipi di dato usati dal servizio. • <message>: i messaggi usati dal web service. • <portType>: le operazioni eseguite dal servizio. • <binding>: i protocolli di comunicazione usati dal servizio. La struttura principale del documento è simile a quella presentata nel seguente listato: <definitions> <types> definizione dei tipi.... </types> <message> definizione di un messaggio.... </message> <portType> definizione di un port.... </portType> <binding> definifinizione di un binding... </binding> </definitions> Un documento WSDL può anche contenere altri elementi come elementi di estensione e un elemento del servizio che dà la possibilità di raggruppare le definizioni di diversi web service in un solo documento WSDL. Port WSDL L'elemento <portType> è il più importante in un documento WSDL: descrive il servizio, le operazioni che possono essere eseguite e i messaggi che sono coinvolti in queste operazioni. L'elemento <portType> può essere paragonato ad una libreria di funzioni (o un modulo, o una classe) in un tradizionale linguaggio di programmazione. Messaggi WSDL L'elemento <message> definisce gli elementi di dati di una operazione. Ogni messaggio può essere costituito da una o più parti. Le parti possono essere paragonate a dei parametri di una chiamata di funzione in un linguaggio di programmazione tradizionale.
  • 2. Tipi WSDL L'elemento <types> definisce i tipi di dato usati nel web service: per la massima compatibilità tra le piattaforme WSDL usa XML Schema per definire i tipi di dato. Binding WSDL L'elemento <binding> definisce il formato del messaggio ed i dettagli del protocollo per ogni Port. Esempio di WSDL <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> In questo esempio l'elemento portType definisce un “glossaryTerm” come nome del port e “getTerm” come nome dell'operazione. L'operazione “getTerm” ha un messaggio di input chiamato “getTermRequest” e un messaggio di output chiamato “getTermResponse”. Gli elementi <message> definisco le parti di ogni messaggio e i tipi di dato ad esse associato. Confrontando questo esempio con un lingaggio di programmazione tradizionale, “glossaryTerm” risulta essere una libreria di funzioni, “getTerm” una funzione con “getTermRequest” come parametro di input e “getTermResponse” come parametro di output. Port WSDL Un port WSDL descrive le interfacce ( le operazioni consentite) presentate da un web service. Il port definisce un punto di connessione con il servizio. Un port può essere visto come una libreria di funzioni e ogni sua operazione come una funzione. Tipi di Operazioni Il tipo di operazione Request-Response è il più comune in WSDL ma non è l'unico supportato. • One-Way: L'operazione può ricevere una richiesta ma non ritorna nessuna risposta • Request-Response: L'operazione può ricevere delle richieste e ritornerà una risposta. • Solicit-Response: L'operazione può spedire una richiesta e attendere per una risposta. • Notification: L'operazione può spedire un messaggio ma non attenderà una risposta. Operazioni One-Way <message name="newTermValues"> <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="setTerm"> <input name="newTerm" message="newTermValues"/> </operation> </portType > Nell'esempio il porto “glossaryTerms” definisce un'operazione one-way chiamata “setTerm”. L'operazione “setTerm” accetta messaggi di input con nuovi termini del glossario, usando un messaggio “newTermValues” con parametri di input “term” e “value”. Non è stato definito nessun output per questa operazione.
  • 3. Operazioni Request-Response <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> Nell'esempio il port “glossaryTerms” definisce una operazione Request-Response chiamata “getTerm”.L'operazione “getTerm” richiede un messaggio di input chiamato “getTermRequest”,con un parametro chiamato “term”,e ritorna un messaggio di output chiamato “getTermResponse”, con un parametro chiamato “value”. Binding WSDL Un binding WSDL definisce il formato del messaggio e i dettagli sul protocollo per un servizio web. Binding con SOAP <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> <binding type="glossaryTerms" name="b1"> <soap:binding style="document” transport="http://schemas.xmlsoap.org/soap/ http" /> <operation> <soap:operation soapAction="http://example.com/getTerm"/> <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation> </binding> L'elemento <binging> ha due attributi: name e type. L'attributo name ( si può usare qualsiasi nome si voglia) definisce il nome del binding mentre l'attributo type punta al port a cui si riferisce il binding, in questo caso “glossaryTerms”. L'elemento soap:binding ha due attributi: style e transport. L'attributo style può valere o “rpc” (remote procedure call) oppure “document” (in questo caso abbiamo usato “document”) mentre l'attributo transport definisce il protocollo SOAP da utilizzare (in questo caso usiamo HTTP). L'elemento operation definisce ogni operazioni che il port espone (contiene). Per ogni operazione
  • 4. deve essere definita la SOAP action corrispondente e si deve inoltre specificare come gli input e gli output devono essere codificati (in questo caso abbiamo usato “literal”. WSDL e UDDI Universal Description, Discovery e Integration (UDDI) è un servizio di directory in cui le imprese possono registrarsi e cercare i servizi Web. UDDI è framework indipendente dalla piattaform per la descrizione dei servizi, il discovery delle imprese, e per l'integrazione dei servizi imprenditoriali tramite Internet. UDDI è una directory per immagazzinare informazioni sui servizi e le interfacce dei web service scritte in WSDL. UDDI comunica tramite SOAP ed è costruita all'interno della piattaforma Microsoft .NET. UDDI usa gli standard del W3C (World Wide Web Consortium) e dell'IETF (Internet Engineering Task Force) come XML, SOAP, HTTP e DNS e inoltre sfrutta WSDL per descrivere le interfacce dei servizi. UDDI è utile per trovare l'impresa giusta tra i milioni di imprese online, per definire come stabilire il commercio una volta trovata l'impresa, raggiungere nuovi consumatori e migliorare l'accesso di quelli già acquisiti, risolvere Oltre 200 compagnie già sono membri della comunità UDDI.