Web Service: tecnologie (SOAP, WSDL, UDDI)



Documenti analoghi
WSDL. Ing. dell Informazione Gestione dei Servizi Telematici Federica Paganelli 1

RILEVAZIONE PRESENZE SPECIFICHE TECNICHE COLLOQUIO

A2A Specifiche Web Services

Laboratorio di Sistemi Distribuiti

Web Services Security

Web Service SOAP e WSDL. Tito Flagella tito@link.it Lorenzo Nardi nardi80@gmail.com

Service Oriented Architectures (SOA)

Introduzione ai Web Services Alberto Polzonetti

fornitore di servizi utente all interazione tra utenti e sistemi

Progetto SIRPE De-materializzazione delle prescrizioni. Servizi personalizzati della CIL

PROGETTO TESSERA SANITARIA SERVIZI DI COMUNICAZIONE ATTIVAZIONE E REVOCA DELLE TS-CNS

PROGETTO TESSERA SANITARIA

Web Services. Scoperta del servizio UDDI. Descrizione del servizio WSDL. Accesso al servizio SOAP XML. Starto di comunicazione HTTP

SOAP e i Web Services

QUALIFICAZIONE DELLA PORTA DI DOMINIO

Introduzione ai Web Services. Tito Flagella

ZTL Firenze Inserimento Automatico

Architetture orientate ai servizi

Introduzione alle griglie computazionali LEZIONE N. 10. Università degli Studi di Napoli Federico II Corso di Laurea in Informatica III Anno

Seminario di Sistemi Distribuiti RPC su SOAP

1. Accordo di servizio Richiesta Indirizzi PEC CAD Art6 [concessionario del servizio di posta certificata al cittadino]

Client e Server comunicano tramite il protocollo SOAP.

Creare client statici

Introduzione ai Web Services. Moreno Marzolla INFN Sezione di Padova

Introduzione a Service Oriented Architecture e Web Service

Sicurezza nei Web Services: Migrazione dell autenticazone di Web Services da ticket di sessione a WS-Security con token SAML

Gestione Richieste Patenti Web

Web service. A cura di Azzurra Ragone

Il Registro dei Servizi di OpenSPCoop i. Il Registro dei Servizi di OpenSPCoop

Service Oriented Architecture and Web Services

INF-1: Specifiche Tecniche di Interfaccia

Web Service. Massimo Martinelli

Introduzione alle applicazioni di rete

Un introduzione ai Web service

Web Service Architecture

Approfondimento. Web Services

PROGETTO TESSERA SANITARIA

SVI Nuovo Sistema Revisioni

Interazione fra applicazioni

Protocolli applicativi: FTP

Corso: Sistemi di elaborazione delle informazioni 2. Anno Accademico: 2007/2008. Docente: Mauro Giacomini

2 Reti di Calcolatori XML

Ministero del Lavoro e delle Politiche Sociali

Manuale Utente. STARTUP Servizio Dettaglio Vetrina Release 1.0. Versione: 1.0 Data Versione: 7 / 11 / Descr. modifiche: Motivazioni :

Seminario di Sistemi Distribuiti: RPC su SOAP

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Definizione di Web service (2) Un introduzione ai Web service. Caratteristiche dei Web service. Valeria Cardellini Università di Roma Tor Vergata

Do-Dots Protocollo di comunicazione

Reti di Telecomunicazione Lezione 8

SOA e Web Service SISTEMI INFORMATIVI MODULO II. Corso di Sistemi Informativi Modulo II A. A

Portale regionale della Salute. Servizi di prenotazione prestazione e pagamento ticket.

Definizione delle interfacce di colloquio SOAP 1.1

Il Protocollo HTTP e la programmazione di estensioni Web

Web Service medra per la gestione DOI

Modelli per la descrizione di protocolli

Tutorial di configurazione e programmazione di OpenSPCoop. Tutorial di configurazione e programmazione di OpenSPCoop

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Il Web-Service SDMX dell ISTAT

Web Service. Web Service. Web Service: un sistema di elaborazione distribuita

Web Services. [Papazoglou] Papazoglou, Web Services Principles and Technology, 2008

PROGETTO TESSERA SANITARIA WEB SERVICE CMS ATTIVAZIONE E REVOCA TS-CNS IN INTEROPERABILITA FRA CARD MANAGEMENT SYSTEM

Laboratorio di RETI DI CALCOLATORI

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited

Reti di Telecomunicazione Lezione 6

ISTRUZIONI PER IL SERVIZIO SPCOOP - RICEZIONE

Griglie computazionali LEZIONE N. 14. Università degli Studi di Napoli Federico II Corso di Laurea Magistrale in Informatica I Anno

1 Vincenzo de Stefano SAP e Servizi Web

Gestione degli indirizzi

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Allegato) all art.4 punto 5 Informatizzazione del Magazzino

Tutorial di configurazione e programmazione di OpenSPCoop. Tutorial di configurazione e programmazione di OpenSPCoop

ALLEGATO C STANDARD TECNICI DELLA BORSA CONTINUA NAZIONALE DEL LAVORO

Specifiche tecniche per il controllo e la trasmissione telematica delle pratiche di Comunicazione Unica

L04 - SOAP. Ing. dell Informazione Gestione dei Servizi Telematici Federica Paganelli 1

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Lezione 1 Introduzione

Web Service per il controllo e la trasmissione telematica delle pratiche di Comunicazione Unica

SERVICE BROWSER. Versione 1.0

MANUALE DI INTEGRAZIONE API SMSSmart (v 2.2)

OPC XML Data Access Specification.

WEB SERVICES SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

19. LA PROGRAMMAZIONE LATO SERVER

Internet Architettura del www

Web Service: tecnologie

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Appendice D. D. Web Services

PAG. 1 DI LUGLIO 2010 PROGETTO TESSERA SANITARIA WEB SERVICES PER LA TRASMISSIONE DEI CERTIFICATI DI MALATTIA ALL INPS VER 1.

Specifiche di integrazione dei servizi di accesso. Versione 01

PROGETTO WEB SERVICES DOGANE SERVIZI PER RICEZIONE ED ELABORAZIONE MESSAGGI AMBIENTE REALE

UDDI e WSDL: navigare sicuri nel mare dei Web. Col passare del tempo, la rete delle reti

Sistemi informativi secondo prospettive combinate

Il Sistema di interscambio: Prodotti di TEST a supporto dell adesione ai servizi

Gestione degli indirizzi

ProgettoSMS. Manuale Gateway FTP Text

Java Web Services. Uso di Eclipse e Apache Axis

SOFTWARE A SUPPORTO DELLA GESTIONE AMMINISTRATIVA DELLO SPORTELLO UNICO SPECIFICA DEI REQUISITI UTENTE

Successo del Web. Limiti del web. Interazione fra applicazioni WEB SERVICES

Architetture software

Corso di Applicazioni Telematiche

VERIFICHE E APPROVAZIONI CONTROLLO APPROVAZIONE

Transcript:

Corso di Laurea Magistrale in Ingegneria Gestionale Corso di Sistemi Informativi Modulo II A. A. 2013-2014 SISTEMI INFORMATIVI Modulo II Web Service: tecnologie (SOAP, WSDL, UDDI) Figure tratte dal testo di riferimento, Copyright Springer Verlag Berlin Heidelberg 2004 1

SOA e Web Service UDDI SERVICE REGISTRY SERVICE DESCRIPTION 1 PUBLISH 2 FIND SOAP SOAP WSDL WSDL SERVICE CONSUMER SOAP 3 BIND SERVICE SERVICE INTERFACE INTERFACE SERVICE DESCRIPTION SERVICE SERVICE PROVIDER Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 2

SOAP SOAP: Simple Object Access Protocol. Nato nel 1999. Ultima W3C Recommendation: versione 1.2 del 2007. La specifica di SOAP copre 4 aree: Formato di messaggi basato su XML per la comunicazione unidirezionale e stateless Descrizione di come un messaggio SOAP (che è un documento XML) deve essere trasportato attraverso HTTP (per interazioni via Web) o SMTP (per interazioni via email) Regole da seguire per elaborare un messaggio SOAP e classificazione delle entità coinvolte: quali parti devono essere lette da chi, cosa fare in caso il contenuto non venga compreso. (document-style Web Service) Convenzioni su come eseguire una chiamata RPC e inviare una risposta attraverso SOAP per implementare RPC-style WS Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 3

Messaggi SOAP Ogni messaggio SOAP è costituito da un envelope (busta) che contiene i dati Un messaggio SOAP ha 2 parti: header: è opzionale e può essere suddiviso in blocchi body: è obbligatorio e può essere suddiviso in blocchi SOAP non specifica come usare header e body; convenzionalmente, però, l'header contiene dati utili al middleware WS SOAP, il body dati utili alle applicazioni Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 4

Messaggi SOAP: esempio 1 Solo body Namespace XML per la serializzazione di messaggi SOAP Namespace XML per l'envelope SOAP <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:getlasttradeprice xmlns:m="some-uri"> <symbol>dis</symbol> </m:getlasttradeprice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 5

Messaggi SOAP: esempio 2 Header e body <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> <t:transaction xmlns:t="some-uri" SOAP-ENV:mustUnderstand= true"> 5 </t:transaction> </SOAP-ENV:Header> <SOAP-ENV:Body> <m:getlasttradeprice xmlns:m="some-uri"> <symbol>dis</symbol> </m:getlasttradeprice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 6

Header SOAP L'header è adibito a usi di livello infrastruttura, non applicativo: informazioni di coordinamento, identificative (p.e. di transazione), di sicurezza (p.e. certificati), etc. SOAP non definisce quali informazioni un header debba contenere, ma prevede l'uso di attributi con cui il mittente può specificare chi, tra i diversi nodi che un messaggio può attraversare prima di giungere al destinatario finale, può o deve elaborare ciascun blocco: role (SOAP v. 1.2; in SOAP 1.1 vi era l'analogo attributo actor): URI del ruolo (tipo di nodo) che può elaborare un blocco. Può essere application-defined o uno dei tre ruoli standard forniti da SOAP: none: propagare l'informazione senza elaborarla next: ciascun nodo che riceve questo messaggio può elaborare questo blocco ultimatereceiver: il blocco è per il destinatario finale del messaggio mustunderstand: può valere true o false, indica se è obbligatorio elaborare il blocco. relay: inoltra l'header se non elaborato (introdotto in SOAP 1.2) Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 7

Header SOAP regole di elaborazione Ogni nodo SOAP lungo il percorso del messaggio guarda il ruolo associato ad ogni blocco. Il ruolo determina chi è responsabile di ciascun blocco. Se un blocco non ha ruolo, il default è ultimatereceiver Se è presente mustunderstand, un nodo che corrisponde al ruolo deve elaborare quella parte del messaggio; se non può, deve generare un fault e non inoltrare più il messaggio Se è presente relay, un nodo che non elabora una parte del messaggio la deve inoltrare (cioè non può eliminarla) L'uso di relay insieme al ruolo next è utile per stabilire informazioni persistenti lungo il percorso del messaggio (ad es. informazioni di sessione) Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 8

Codifica L'attributo encodingstyle si può applicare a qualsiasi blocco dell'header e del body. Ha come valore un URI che indica il tipo di dato e la codifica contenuta nell'elemento (e nei suoi discendenti) Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 9

Header SOAP: esempio <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:c="http://transactions.example.org" xmlns:r="http://routings.example.org"> <env:header> <c:transactionid env:mustunderstand="true" env:role="http://transactions.example.org/tmonitor"> 18 </c:transactionid> <r:route env:relay="true" env:role="http://www.w3.org/2003/05/soap-envelope/role/next"> <r:node>130.225.16.12</r:node> <r:node>10.11.40.201</r:node> </r:route> </env:header> <env:body> <m:chargereservation xmlns:m="http://travel.example.org/" env:encodingstyle="http://www.w3.org/2003/05/soap-encoding" /> <m:reservation xmlns:m="http://travel.example.org/reservation" /> </env:body> </env:envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 10

Body SOAP Contiene i dati per il destinatario del messaggio ed è application-specific Contrariamente all'header, SOAP specifica i contenuti di alcuni elementi del body blocchi del body da usare per mappare una interazione RPC il blocco Fault, da inserire nei messaggi di risposta per segnalare un errore Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 11

Il blocco Fault In SOAP 1.2, contiene due elementi obbligatori Code: indica la categoria di errore (tra quelle definite da SOAP) ed eventuale sottocategoria (definita invece dall'applicazione). Categorie: Sender: errore del mittente (messaggio malformato, dati mancanti, etc.) Receiver: errore del destinatario (impossibile elaborare il messaggio al momento) MustUnderstand: un blocco header con mustunderstand=true non è stato compreso VersionMismatch: errore nell'envelope SOAP (tipicamente di versione) DataEncodingUnknown: codifica non supportata per un blocco dell'header o del body Reason: spiegazione dell'errore comprensibile da utenti umani (non destinata all'elaborazione da parte di agenti automatici) ed altri opzionali Detail: informazioni sull'errore specifiche in base all'applicazione Node: identificativo del nodo che ha prodotto l'errore (se assente, si intende il destinatario del messaggio) Role: ruolo svolto dal nodo che ha prodotto l'errore. Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 12

Gestione degli errori esempio Messaggio di risposta a una richiesta contenente un parametro non valido <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:w="http://www.widget.inc/shop"> <env:body> <env:fault> <env:code> <env:value>env:sender</env:value> <env:subcode> <env:value>w:invalidbuyrequest</env:value> </env:subcode> </env:code> <env:reason> <env:text xml:lang="en"> The value of 'amount' is invalid! </env:text> <env:text xml:lang= it"> Il valore di amount non e valido! </env:text> </env:reason> </env:fault> </env:body> </env:envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 13

Esempio riepilogativo 1/2 Prenotazione di un viaggio <?xmlversion='1.0'?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:header> <m:reservation xmlns:m="http://travelc.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustunderstand="true"> <m:ref>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:ref> <m:dateandtime>2001-11-29t13:20:00.000-05:00</m:dateandtime> </m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustunderstand="true"> <n:name>åke Jógvan Øyvind</n:name> </n:passenger> </env:header> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 14

Esempio riepilogativo <env:body> <p:itinerary xmlns:p="http://travel.example.org/reservation/travel"> <p:departure> <p:departing>new York</p:departing> <p:arriving>los Angeles</p:arriving> <p:departuredate>2001-12-14</p:departuredate> <p:departuretime>lateafternoon</p:departuretime> <p:seatpreference>aisle</p:seatpreference> </p:departure> <p:return> <p:departing>los Angeles</p:departing> <p:arriving>new York</p:arriving> <p:departuredate>2001-12-20</p:departuredate> <p:departuretime>mid-morning</p:departuretime> <p:seatpreference/> </p:return> </p:itinerary> <q:lodging xmlns:q="http://travel.example.org/reservation/hotels"> <q:preference>none</q:preference> </q:lodging> </env:body> </env:envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 15

SOAP e HTTP Un binding di SOAP a un protocollo di trasporto è una descrizione di come inviare messaggi SOAP usando quel protocollo. Il binding SOAP più comune è HTTP. SOAP può usare GET o POST. Con GET, la richiesta non è un messaggio SOAP ma lo è la risposta. Con POST, sia la richiesta sia la risposta sono messaggi SOAP. SOAP usa gli stessi status code di HTTP per facilitare l'interpretazione delle risposte HTTP. Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 16

Esempio - richiesta Richiesta della quotazione di un titolo azionario POST /StockQuote HTTP/1.1 Host: stock.example.org Content-Type: application/soap+xml; charset="utf-8" action= Some-URI Content-Length: 296 <ENV:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <ENV:Body> <m:getlasttradeprice xmlns:m="some-uri"> <m:symbol>dis</m:symbol> </m:getlasttradeprice> </ENV:Body> </ENV:Envelope> Notare il Content-type e il parametro action, che indica l'intento della richiesta attraverso un URI Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 17

Esempio - risposta HTTP/1.1 200 OK Content-Type: application/soap+xml; charset="utf-8" Content-Length: 311 <ENV:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding"> <ENV:Body> <m:getlasttradepriceresponse xmlns:m="some-uri"> <m:price>34.5</m:price> </m:getlasttradepriceresponse> </ENV:Body> </ENV:Envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 18

Tipi di interazione nei Web Service Document-style (a.k.a. messagestyle) interaction Body costituiti da elementi con struttura definita in XML Schema Facilita convalida XML SOAP envelope SOAP body PurchaseOrder document -product item -quantity SOAP envelope SOAP body Acknowledgement document -order id RPC-style interaction Rigido modello richiestarisposta (come nell'esempio precedente) I messaggi contengono chiamate a metodi e parametri di I/O SOAP envelope SOAP body method name ordergoods input parameter 1 product item input parameter 2 quantity SOAP envelope SOAP body method return return value order id Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 19

Usare SOAP per RPC (transazionale) Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 20

RPC con SOAP - 1 HTTP Post SOAP envelope SOAP header transactional context service requester SOAP body name of the procedure input parameter 1 service provider SOAP engine HTTP engine input parameter 2 HTTP engine SOAP engine client implementation (other tiers) HTTP Post SOAP envelope SOAP header transactional context service implementation (other tiers) SOAP body return parameter Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 21

RPC con SOAP - 2 service requestor service provider client implementation invokes the service as a local call client stub service implementation invokes the local procedure of the service implementation server stub invoke SOAP engine to prepare SOAP message SOAP engine packages SOAP into HTTP and passes it to an HTTP client that sends it to the provider HTTP engine the router parses the message, identifies the appropriate stub, and delivers the parsed message SOAP router passes the content of the HTTP message to the router HTTP server Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 22

Interazione RPC-style - richiesta Pagamento di una prenotazione di viaggio <?xmlversion='1.0'?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" > <env:header> <t:transaction xmlns:t="http://thirdparty.example.org/transaction" env:encodingstyle="http://example.com/encoding" env:mustunderstand="true" >5</t:transaction> </env:header> <env:body> <m:chargereservation xmlns:m="http://travelcompany.example.org/" env:encodingstyle="http://www.w3.org/2003/05/soap-encoding"> <n:reservation xmlns:n="http://travelcompany.example.org/reservation"> <n:code>ft35zbq</n:code> </n:reservation> <o:creditcard xmlns:o="http://mycompany.example.com/financial"> <c:name xmlns:c="http://mycompany.example.com/employees"> Åke Jógvan Øyvind </c:name> <o:number>123456789099999</o:number> <o:expiration>2005-02</o:expiration> </o:creditcard> </m:chargereservation> </env:body> </env:envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 23

Interazione RPC-style - risposta <?xmlversion='1.0'?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" > <env:header> <t:transaction xmlns:t="http://thirdparty.example.org/transaction" env:encodingstyle="http://example.com/encoding" env:mustunderstand="true">5</t:transaction> </env:header> <env:body> <m:chargereservationresponse xmlns:rpc="http://www.w3.org/2003/05/soap-rpc" env:encodingstyle="http://www.w3.org/2003/05/soap-encoding" xmlns:m="http://travelcompany.example.org/"> <rpc:result>m:status</rpc:result> <m:status>confirmed</m:status> <m:code>ft35zbq</m:code> <m:viewat> http://travelcompany.example.org/reservations?code=ft35zbq </m:viewat> </m:chargereservationresponse> </env:body> </env:envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 24

Interazione Document-style - esempio Segnalazione di un evento ad una specifica coordinata <?xmlversion='1.0'?> <env:envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" > <env:body> <event>rain</event> <lon>5.1</lon> <lat>7.5</lat> </env:body> </env:envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 25

SOAP - Considerazioni SOAP è un protocollo molto semplice (ed estensibile) per scambiare informazioni/servizi da un middleware a un altro Prime specifiche e implementazioni legate ad HTTP, RPC e modello client-server Successivamente l'iniziativa WS-I (Web Service Interoperabilty) del consorzio OASIS ha raccomandato il document-style perché più flessibile SOAP sfrutta XML per interoperabilità e serializzazione dei dati Limiti di SOAP Uso di HTTP e XML comunicazione poco ottimizzata e rappresentazione dei dati non compatta prestazioni inferiori a middleware basati su strutture dati e protocolli specializzati e binari (p.e. CORBA) Troppo generico e semplice per supportare EAI in scenari reali. Ad esempio, sicurezza, affidabilità, transazioni e accounting sono non integrati nel protocollo. Occorrono ulteriori specifiche frutto di accordi stabiliti tra i partner nei mercati verticali (poco praticabile) definite tramite appositi standard (in corso di definizione da WS-I: WS-Security, WS-Coordination, WS-Transactions,...) Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 26

WSDL WSDL = Web Service Description Language Linguaggio per descrivere l'interfaccia di un Web Service Descrizione astratta Tipi di dati (basati su XML Schema) da usare nei messaggi Tipi di messaggi (SOAP) coinvolti nell'invocazione del servizio Operazioni messe a disposizione del servizio Descrizione concreta Binding dell'intefaccia ad un protocollo di trasporto (HTTP, ) Endpoint (indirizzo di rete) di ciascun binding, da contattare per invocare il servizio In WSDL, un servizio è costituito da un'interfaccia e dall'insieme dei binding che la implementano Versioni: 1.1 (2001), 2.0 (2007) Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 27

WSDL 1.1: struttura WSDL 1.1 specification abstract part types messages operations port types concrete part bindings services and ports Types: definizioni di tipi di dati (usando XML Schema e XSD) Message: definizione astratta di ciascun possibile messaggio Ogni messaggio è composto da parti, caratterizzate ognuna da un nome e un tipo Operation: descrizione astratta di un'azione fornita dal servizio Port type: insieme di operazioni Binding: protocollo e formato di dati per un particolare port type Port: endpoint di servizio dato da una coppia binding-indirizzo di rete Service: endpoint correlati Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 28

WSDL 1.1: esempio <?xml version="1.0"?> <definitions name="procurement" targetnamespace="http://example.com/procurement/definitions" xmlns:tns="http://example.com/procurement/definitions" xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" > <message name="ordermsg"> <part name="productname" type="xs:string"/> <part name="quantity" type="xs:integer"/> </message> abstract part messages <porttype name="procurementporttype"> <operation name="ordergoods"> <input message = "OrderMsg"/> </operation> </porttype> operation and port type <binding name="procurementsoapbinding" type="tns:procurementporttype"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="ordergoods"> <soap:operation soapaction="http://example.com/ordergoods"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="procurementservice"> <port name="procurementport" binding="tns:procurementsoapbinding"> <soap:address location="http://example.com/procurement"/> </port> </service> </definitions> concrete part binding port and service Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 29

Abstract part message: nome del messaggio (univoco nel doc. WSDL) part: name: nome della parte (univoco all'interno del messaggio) element: elemento XSD (opzionale) type: tipo di dato (XSD simpletype o complextype) porttype: insieme di operazioni, ciascuna dotata di nome univoco e messaggi coinvolti Un porttype può supportare 4 tipologie di interazione One-way: l'endpoint riceve un messaggio Request-response: l'endpoint riceve un messaggio e ne invia uno correlato Solicit-response: l'endpoint invia un messaggio e ne riceve uno correlato Notification: l'endpoint invia un messaggio Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 30

PortType: tipi di interazione One-way <wsdl:definitions... > <wsdl:porttype... > * <wsdl:operation name="nmtoken"> <wsdl:input name="nmtoken"? message="qname"/> </wsdl:operation> </wsdl:porttype> </wsdl:definitions> Request-response <wsdl:operation name="nmtoken" parameterorder="nmtokens"> <wsdl:input name="nmtoken"? message="qname"/> <wsdl:output name="nmtoken"? message="qname"/> <wsdl:fault name="nmtoken" message="qname"/>* </wsdl:operation> Solicit-response <wsdl:operation name="nmtoken" parameterorder="nmtokens"> <wsdl:output name="nmtoken"? message="qname"/> <wsdl:input name="nmtoken"? message="qname"/> <wsdl:fault name="nmtoken" message="qname"/>* </wsdl:operation> Notification <wsdl:operation name="nmtoken"> <wsdl:output name="nmtoken"? message="qname"/> </wsdl:operation> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 31

Binding Un binding definisce i formati dei messaggi e i dettagli del protocollo per le operazioni e i messaggi di un particolare porttype. Un porttype può avere un qualsiasi numero di binding L'attributo name dev'essere univoco nel documento WSDL L'attributo type indica il porttype a cui il binding si riferisce Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 32

Port Un elemento port definisce un singolo endpoint di servizio specificando un unico indirizzo per un binding <wsdl:port name="nmtoken" binding="qname"> <--extensibilityelement(1) --> </wsdl:port> Il valore di name dev'essere univoco all'interno del documento WSDL Il valore di binding indica il binding a cui la porta si riferisce Gli extensibility element permettono di specificare l'indirizzo di rete (tipicamente un URL a cui mandare messaggi SOAP su HTTP) L'indirizzo dev'essere unico per ciascuna porta Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 33

Service Service raggruppa un insieme di porte correlate Il valore di name dev'essere univoco all'interno del documento WSDL Un servizio può avere una o più port Se due o più porte sono dello stesso porttype, si intendono come alternative: il comportamento del servizio sarà lo stesso, ma sono disponibili diversi binding su protocolli diversi Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 34

Compatibilità consumer-producer Un consumatore di servizio, esaminando gli elementi port del service nel documento WSDL, vede quali sono i porttype e si rende conto di quali può usare. Ciò è importante soprattutto quando un servizio consta di più operazioni collegate tra loro: il fruitore deve supportare almeno una port per ogni porttype delle operation che vuole usare, altrimenti non potrà usare compiutamente il servizio. Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 35

Binding SOAP WSDL include un binding per endpoint SOAP, che supporta la specifica delle seguenti informazioni Indicazione che il binding si basa su protocollo SOAP Modo di specificare l'indirizzo dell'endpoint SOAP (elemento soap:address) URI per il parametro action dell'header HTTP Content-type, che specifica l'intento dell'operazione Elenco di definizioni di header da trasmettere Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 36

Definizione WSDL di servizio con binding SOAP - 1 <?xmlversion="1.0"?> <definitions name="stockquote" targetnamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd="http://www.w3.org/2000/10/xmlschema" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="gettradepriceinput"> <part name="tickersymbol" element="xsd:string"/> <part name="time" element="xsd:timeinstant"/> </message> <message name="gettradepriceoutput"> <part name="result" type="xsd:float"/> </message> <porttype name="stockquoteporttype"> <operation name="gettradeprice"> <input message="tns:gettradepriceinput"/> <output message="tns:gettradepriceoutput"/> </operation> </porttype> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 37

Definizione WSDL di servizio con binding SOAP - 2 <binding name="stockquotesoapbinding" type="tns:stockquoteporttype"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="gettradeprice"> <soap:operation soapaction="http://example.com/gettradeprice"/> <input> <soap:body use="encoded" namespace="http://example.com/stockquote" encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="encoded" namespace="http://example.com/stockquote" encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="stockquoteservice"> <documentation>my first service</documentation> <port name="stockquoteport" binding="tns:stockquotebinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 38

WSDL Snowboard Example - types section <?xml <?xml version="1.0"?> <!-- <!-- root root element element wsdl:definitions defines defines set set of of related related services --> --> <wsdl:definitions name="endorsementsearch" targetnamespace="http://namespaces.snowboard-info.com" xmlns:es="http://www.snowboard-info.com/endorsementsearch.wsdl" xmlns:esxsd="http://schemas.snowboard-info.com/endorsementsearch.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <!-- <!-- wsdl:types encapsulates schema schema definitions of of communication types; types; here here using using xsd xsd --> --> <wsdl:types> <!-- <!-- all all type type declarations are are in in a chunk chunk of of xsd xsd --> --> <xsd:schema targetnamespace="http://namespaces.snowboard-info.com" xmlns:xsd="http://www.w3.org/1999/xmlschema"> <!-- <!-- xsd xsd definition: GetEndorsingBoarder [manufacturer string, string, model model string] string] --> --> <xsd:element name="getendorsingboarder"> <xsd:complextype> <xsd:sequence> <xsd:element name="manufacturer" type="string"/> <xsd:element name="model" type="string"/> </xsd:sequence> </xsd:complextype> </xsd:element> <!-- <!-- xsd xsd definition: GetEndorsingBoarderResponse [... [... endorsingboarder string string...]...] --> --> <xsd:element name="getendorsingboarderresponse"> <xsd:complextype> <xsd:all> <xsd:element name="endorsingboarder" type="string"/> </xsd:all> </xsd:complextype> </xsd:element> <!-- <!-- xsd xsd definition: GetEndorsingBoarderFault [... [... errormessage string string...]...] --> --> <xsd:element name="getendorsingboarderfault"> <xsd:complextype> <xsd:all> <xsd:element name="errormessage" type="string"/> </xsd:all> </xsd:complextype> </xsd:element> </xsd:schema> </wsdl:types> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 39

WSDL Snowboard Example - message, porttype sections <!-- wsdl:message elements describe potential transactions --> <!-- request GetEndorsingBoarderRequest is of type GetEndorsingBoarder --> <wsdl:message name="getendorsingboarderrequest"> <wsdl:part name="body" element="esxsd:getendorsingboarder"/> </wsdl:message> <!-- response GetEndorsingBoarderResponse is of type GetEndorsingBoarderResponse --> <wsdl:message name="getendorsingboarderresponse"> <wsdl:part name="body" element="esxsd:getendorsingboarderresponse"/> </wsdl:message> <!-- wsdl:porttype describes messages in an operation --> <wsdl:porttype name="getendorsingboarderporttype"> <!-- the value of wsdl:operation eludes me --> <wsdl:operation name="getendorsingboarder"> <wsdl:input message="es:getendorsingboarderrequest"/> <wsdl:output message="es:getendorsingboarderresponse"/> <wsdl:fault message="es:getendorsingboarderfault"/> </wsdl:operation> </wsdl:porttype> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 40

WSDL Snowboard Example - binding, service sections <!-- <!-- wsdl:binding states states a serialization protocol for for this this service service --> --> <wsdl:binding name="endorsementsearchsoapbinding" type="es:getendorsingboarderporttype"> <!-- <!-- leverage off off soap:binding document style style @@@(no @@@(no wsdl:foo pointing at at the the soap soap binding) --> --> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <!-- <!-- semi-opaque container of of network network transport details details classed classed by by soap:binding above above @@@ @@@ --> --> <wsdl:operation name="getendorsingboarder"> <!-- <!-- again again bind bind to to SOAP? SOAP? @@@ @@@ --> --> <soap:operation soapaction="http://www.snowboard-info.com/endorsementsearch"/> <!-- <!-- furthur furthur specify specify that that the the messages messages in in the the wsdl:operation "GetEndorsingBoarder" use use SOAP? SOAP? @@@ @@@ --> --> <wsdl:input> <soap:body use="literal" namespace="http://schemas.snowboard-info.com/endorsementsearch.xsd"/> </wsdl:input> <wsdl:output> <soap:body use="literal" namespace="http://schemas.snowboard-info.com/endorsementsearch.xsd"/> </wsdl:output> <wsdl:fault> <soap:body use="literal" namespace="http://schemas.snowboard-info.com/endorsementsearch.xsd"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <!-- <!-- wsdl:service names names a new new service service "EndorsementSearchService" --> --> <wsdl:service name="endorsementsearchservice"> <wsdl:documentation>snowboarding-info.com Endorsement Service</wsdl:documentation> <!-- <!-- connect connect it it to to the the binding binding "EndorsementSearchSoapBinding" above above --> --> <wsdl:port name="getendorsingboarderport" binding="es:endorsementsearchsoapbinding"> <!-- <!-- give give the the binding binding an an network network address address --> --> <soap:address location="http://www.snowboard-info.com/endorsementsearch"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 41

WSDL Snowboard Example - SOAP Request/Response SOAP request <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:getendorsingboarder xmlns:m="http://namespaces.snowboard-info.com"> <manufacturer>k2</manufacturer> <model>fatbob</model> </m:getendorsingboarder> </SOAP-ENV:Body> </SOAP-ENV:Envelope> SOAP response <SOAP-ENV:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:getendorsingboarderresponse xmlns:m="http://namespaces.snowboard-info.com"> <endorsingboarder>chris Englesmann</endorsingBoarder> </m:getendorsingboarderresponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 42

WSDL 2.0 vs WSDL 1.1 WSDL 1.1 WSDL 2.0 Elemento radice: definitions Elemento radice: description Port Endpoint PortType Interface Supporto per ereditarietà delle interfacce Messaggi composti da parti Messaggi definiti attraverso tipi XML Schema 4 primitive di trasmissione 9 pattern di scambio di messaggi Supporto per overloading delle operazioni Novità: feature e property Overloading delle operazioni eliminato Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 43

Struttura di documento WSDL 2.0 <description xmlns="http://www.w3.org/2004/08/wsdl" targetnamespace="..."...> <types> <!-- Descrizione XML Schema dei tipi di dato usati nei messaggi --> </types> <interface name="..."> <!-- Elenco di operazioni con relativi input e output --> </interface> <binding name="..." interface="..." type="..."> <!-- Codifiche dei messaggi e protocolli di comunicazione --> </binding> <service name="..." interface="..."> <!-- Combinazione di un'interfaccia, un binding e un indirizzo di servizio --> </service> </description> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 44

Pattern di scambio di messaggi In-only: un singolo messaggio in arrivo, nessun fault Out-only: un singolo messaggio in uscita, nessun fault Robust in-only: un singolo messaggio in arrivo, può provocare un messaggio di fault Robust out-only: un singolo messaggio in uscita, può provocare un messaggio di fault In-out: messaggio A in arrivo, messaggio B in uscita; se c'è un fault, è mandato al posto di B Out-in: messaggio A in uscita, messaggio B in arrivo; se c'è un fault, è mandato al posto di B Asynchronous out-in: come out-in ma con trigger per messaggi In-multi-out: Come in-out, ma zero o più messaggi in uscita (se c'è un fault, sostituisce un messaggio) Out-multi-in: inverso di in-multi-out Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 45

Uso dei pattern L'interazione RPC-style può essere usata solo con in-out, in-only, Robust in-only <operation name="getrecipesoperation" pattern="http://www.w3.org/2004/03/wsdl/in-out"> <input messagelabel="in" element="t:getrecipes"/> <output messagelabel="out" element="t:collection"/> </operation> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 46

UDDI UDDI = Universal Description, Discovery and Integration Versioni: 1.0 del 2000, 3.0 del 2004 (consorzio OASIS) Standard per directory service per permettere il binding dinamico (discovery e uso) di Web Service in modo automatico da parte di agenti software Permette di trovare il/i servizio/i richiesto/i tra quelli disponibili Fornisce al fruitore informazioni per invocare il servizio (indirizzo dell'endpoint, protocollo, struttura e codifica dei dati) Facilita la gestione di errori nell'invocazione del servizio Le operazioni per registration e discovery dei servizi sono esse stesse basate su messaggi SOAP Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 47

Uso di Web Service con UDDI Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 48

Usare UDDI Principali operazioni di un directory service (a.k.a. binder): Registrazione: un fornitore (server) di WS registra nomi dei servizi e porte corrispondenti Ritiro: un fornitore ritira un WS (annulla la registrazione) Ricerca (lookup): un fruitore (client) cerca informazioni sui WS disponibili Come trovare in primo luogo il directory service? Locazione predefinita Variabili d'ambiente Invio di messaggi broadcast per cercare il directory service nella rete Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 49

Modello dei dati UDDI - 1 Possiamo classificare le informazioni contenute in un registro UDDI rispetto allo scopo per cui sono usate: pagine bianche: elenco contenente il nome dell organizzazione, i contatti (ad es. telefono o indirizzo email) e il/i servizi offerto/i. La ricerca del WS è fatta in base alla società che lo fornisce businessentity: descrive una organizzazione che fornisce servizi publisherassertion: descrive relazioni tra le organizzazioni businessservice: elenco dei servizi forniti da un'organizzazione bindingtemplate: informazioni per invocare un servizio, inclusi indirizzo di rete e riferimento a un tmodel pagine gialle: la classificazione è fatta rispetto ad una tassonomia (standardizzata ad esempio UNSPSC (Universal Standard Products and Services Classification) or ISO 3166 Country Codes - o definita dall utente). Si ricerca il servizio in base alla categoria a cui appartiene pagine verdi: informazioni su come un servizio può essere invocato tmodel (tecnhnical model): dettagli tecnici, tra cui puntatore al documento WSDL (che non risiede nel registro UDDI) e parametri di QoS Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 50

Modello dei dati UDDI -2 Ciascun tipo di informazione è contenuto in un tipo di documento XML, di cui le specifiche UDDI definiscono lo schema. businessentity name contacts description identifiers categories businessservice service key name description categories bindingtemplate binding key description address detailed info references to tmodels tmodel keytmodel key name key name description name description overviewdoc description overviewdoc identifiers overviewdoc identifiers categories identifiers categories categories tmodel tmodel key key name name description description overviewdoc overviewdoc identifiers identifiers categories categories Specs stored at the provider s site Stored in the UDDI registry Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 51

Esempio di business entity 1/2 <businessentity xmlns="urn:uddi-org:api_v3" businesskey="uddi:7398388-7f63-73k3-h314-763272da7g41"> <name>widget Inc.</name> <contacts> <contact usetype="chief Executive Officer"> <description>ceo of Widget Inc.</description> <personname>john Doe</personName> <phone usetype="ceo">(202) 555-1414</phone> <email usetype="ceo">john.doe@widget.inc</email> </contact> </contacts> <businessservices> <businessservice servicekey="uddi:9x65542-8je7-8732-u893-8272634h7362" businesskey="uddi:7398388-7f63-73k3-h314-763272da7g41"> <name>doe Personal Recipe Server</name> <description> John Doe's personal recipe service </description> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 52

Esempio di business entity 2/2 <bindingtemplates> <bindingtemplate bindingkey="uddi:8h62363-k725-3345-73v5-823763fs7265" servicekey="uddi:9x65542-8je7-8732-u893-8272634h7362"> <accesspoint URLType="http"> http://www.widget.inc/personal/jdoe/recipeserver </accesspoint> <tmodelinstancedetails> <tmodelinstanceinfo tmodelkey="uddi:5241hy7-6252-kn72-7291-3126hj8237a2"/> </tmodelinstancedetails> </bindingtemplate> </bindingtemplates> </businessservice> </businessservices> </businessentity> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 53

Esempio di tmodel <tmodel xmlns="urn:uddi-org:api_v3" tmodelkey="uddi:5241hy7-6252-kn72-7291-3126hj8237a2"> <name>doe Personal Recipe Server</name> <description>john Doe's personal recipe service</description> <overviewdoc> <overviewurl> http://www.widget.inc/personal/jdoe/recipes.wsdl </overviewurl> </overviewdoc> <categorybag> <keyedreference keyname="uddi-org:types" keyvalue="wsdlspec" tmodelkey="uddi:c1acf26d-9672-4404-9d70-39b756e62ab4"/> <keyedreference keyname="iaawg" keyvalue="wdg18762" tmodelkey="uddi:82761uhs-442p-1712-kl82-8272hsh76519"/> </categorybag> </tmodel> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 54

API dei registri UDDI - 1 I registri UDDI espongono diverse API (mediante Web Service): UDDI inquiry API UDDI publishers API UDDI security API UDDI custody and ownership transfer API UDDI subscription API UDDI replication API Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 55

API dei registri UDDI - 2 Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 56

Esempio di discovery richiesta Ricerca dei Web Service appartenenti ad una determinata categoria (contraddistinta per identificativo) <find_service businesskey="uuid_key" generic="2.0" [maxrows="nn"] xmlns="urn:uddi-org:api_v2"> [<findqualifiers/>] [<name/> [<name/>]...] [<categorybag/>] [<tmodelbag/>] </find_service> Body di un messaggio SOAP di richiesta <find_service xmlns="urn:uddi-org:api_v3"> <categorybag> <keyedreference keyname="iaawg" keyvalue="%" tmodelkey="uddi:82761uhs-442p-1712-kl82-8272hsh76519"/> </categorybag> </find_service> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 57

Esempio di discovery risposta Per ogni servizio trovato riceviamo: ID del fornitore ID del servizio nome del servizio Body del messaggio SOAP di risposta <servicelist xmlns="urn:uddi-org:api_v3"> <serviceinfos> <serviceinfo businesskey="uddi:7398388-7f63-73k3-h314-763272da7g41" servicekey="uddi:9x65542-8je7-8732-u893-8272634h7362"> <name>doe Personal Recipe Server</name> </serviceinfo> <serviceinfo businesskey="uddi:82736h57-ha32-p581-0021-8373h6s73443" servicekey="uddi:7252ox72-k23j-4x44-7w23-k82737292527"> <name>average Recipes on The Web</name> </serviceinfo> </serviceinfos> </servicelist> Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 58

Riferimenti Testo di riferimento Alonso, Casati, Kuno, Machiraju, Web Services Concepts, Applications, Challenges, Springer, 2004, cap. 6 SOAP Specifiche W3C: http://www.w3.org/tr/soap/ WSDL Introduzione del W3C: http://www.w3.org/tr/wsdl20-primer/ UDDI Specifiche OASIS: http://www.oasis-open.org/committees/uddi-spec/doc/spec/v3/uddi-v3.0.2-20041019.htm OASIS Web Service Interoperability (WS-I) group http://www.oasis-ws-i.org/ Web Service: tecnologie - Floriano Scioscia, Giuseppe Loseto 59