Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Service
Service
Description Service
Producer
ish
Bi
bl
nd
Pu
WSDL,UDDI
Service
Description
Ruoli in una architettura web services
Service producer.
E’ il proprieterio del servizio. Da un punto di vista
architetturale, rappresenta il nodo che contiene il servizio.
Service consumer
E’ l’applicazione che sta cercando, chiamando o iniziando
un’interazione con un servizio. Un service consumer può
essere un browser o un’applicazione (es., un altro web
service)
Service register
Registro che contiene le descrizioni di servizi pubblicate su
richiesta dei service producer e ricercate dai service
consumer.
Operazioni in una architettura web services
•Publish
Per essere accessibile una descrizione di un servizio deve
essere pubblicata in modo che il service consumer la possa
ritrovare.
•Find
L’operazione di find può avvenire in due fasi distinte per il
consumer: a tempo di progetto del programma per ricercare
la descrizione dell’interfaccia, a run time per effettuare il
binding del servizio richiesto.
•Bind
L’interazione con un servizio ha luogo usando le informazioni
di binding nella descrizione del servizio per localizzare e
chiamare il servizio
Web Services – Come funziona?
Provider
•Contiene:
Pubblicazione.
È quasi sempre di tipo dinamico utilizzando il protocollo
UDDI (Universal Description, Discovery and Integration).
SOAP request
Service
Client Server
SOAP response
Web Services – Esempio di richiesta 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 Services – Esempio di risposta SOAP
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<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:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
WSDL
• Per poter utilizzare un servizio è necessario conoscerne
le caratteristiche
• Il protocollo WDSL (Web Services Definition Language),
basato sempre su XML, svolge proprio questa funzione
• WDSL dice:
– Cosa un servizio può fare (richieste, risposte e
parametri)
– Dove risiede
– Come invocarlo
• Vediamo il documento WSDL che descrive il servizio a
cui abbiamo acceduto nell’esempio di poco fa
WSDL: descrizione dei tipi
• La prima parte di uno schema WSDL descrive i tipi.
<types>
<schema>
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
WSDL: messaggi e operazioni
• Troviamo quindi la descrizione dei messaggi:
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
• E la descrizione delle operazioni: ogni operazione è costituita da un
messaggio di richiesta e uno di risposta:
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
WDSL: binding e servizio
• Il binding è il collegamento tra un tipo di operazione (type), un nome
di operazione (name) e l’azione da eseguire (soapAction):
<binding name="StockQuoteSoapBinding“
type="tns:StockQuotePortType">
<soap:binding>
<operation name="GetLastTradePrice“>
<soap:operation soapAction=“…"/>
<input>…</input>
<output>…</output>
</operation>
</binding>
• L’ultima parte del documento descrive il servizio e l’indirizzo web da
utilizzare per accedervi:
<service name="StockQuoteService">
<port name="StockQuotePort“
binding="tns:StockQuoteBinding">
<soap:address
location="http://www.stockquote.com"/>
</port>
</service>
UDDI
• In un mondo popolato da servizi Web nasce la necessità di rintracciarli
• A questo scopo è stato sviluppato uno standard, denominato UDDI
(Universal Description, Discovery e Integration System)
• UDDI rappresenta in qualche modo l’equivalente di un “elenco telefonico”
online, che permette di rintracciare i web services
• Infatti UDDI offre 3 servizi i cui nomi si ispirano al mondo della telefonia:
– White pages: permette di trovare un servizio per nome
– Yellow pages: permette di trovare un servizio per categoria
– Green Pages: fornisce informazioni tecniche sui servizi offerti da una
determinata azienda
• Un fornitore di servizi UDDI (IBM, Microsoft, SAP ecc.) gestisce un registro
elettronico denominato UBR (UDDI Business Registry) che è accessibile sia
per pubblicare che per rintracciare i web services
Web Services: riepilogo
• Che cosa sono quindi in sintesi i web services:
Sono applicazioni autonome, modulari, autodescrittive,
che possono essere pubblicate, rintracciate e invocate
attraverso il web.
• Permettono di realizzare interazioni fra sistemi attraverso
Internet e consentono di integrare funzioni applicative
distribuite.
• Un web service è costituito da 3 elementi:
– Un meccanismo per la pubblicazione e la
rintracciabilità: UDDI
– Un meccanismo di descrizione: WSDL
– Un meccanismo di invocazione: SOAP
Web services e oggetti distribuiti
• I web services possono essere considerati come una nuova forma di
RMI dove:
– SOAP ha il ruolo di protocollo di trasporto applicativo (come
IIOP)
– WSDL ha il ruolo di IDL
• Esistono strumenti (vedi Axis per Java), in grado di creare lo
scheletro dei client e dei server sulla base di WSDL
• Il vantaggio fondamentale rispetto a CORBA/IIOP è la possibilità di
passare attraverso i firewall
• I web services estendono a internet il mondo degli oggetti distribuiti,
nati in ambito di rete locale
• Sono più flessibili e realizzano un accoppiamento molto più blando
fra client e server