WEB SERVICES - LIAlia.disi.unibo.it/Courses/ModApplRetiCalc0910/materiale/WEB SERVICES.pdf · Web...

29
WEB SERVICES

Transcript of WEB SERVICES - LIAlia.disi.unibo.it/Courses/ModApplRetiCalc0910/materiale/WEB SERVICES.pdf · Web...

WEB SERVICES

Successo del Web• Negli anni passati il Web ha avuto un enorme

successo principalmente per due motivi:– Semplicità:– Ubiquità

• Per un fornitore di servizi è semplice raggiungere unnumero molto elevato di utenti.

• Per un utente è semplice accedere ad un servizioovunque esso si trovi

• Si tratta però di un sistema fortemente orientatoall’interazione tra utenti e sistemi

Interazione fra applicazioni• L’evoluzione dell’utilizzo di Internet e del Web ha fatto

emergere l’esigenza di interazioni fra applicazioni indiversi contesti:– Un programma di gestione aziendale deve poter

integrare le informazioni locali con quelle messe adisposizione su Internet dai fornitori, dalle banche odall’amministrazione pubblica

– Un’applicazione per agenti mobiliari deve poterattingere in tempo reale a informazioni provenienti daimercati finanziari di tutto il mondo e organizzarle in unquadro coerente

– Il sistema di gestione di una biblioteca ha lanecessità di cercare un libro sia nel catalogo localeche in quello di un sistema bibliotecario più vasto(Comune, Provincia, Università…)

Limiti del web• Purtroppo il modello del web non è adatto all’interazione

fra applicazioni• Si basa su modello molto semplice:

– L’utente, usando un browser, trasmette un URL,digitandolo direttamente oppure cliccando su un link

– Il web server restituisce una pagina HTML che viene resagraficamente dal browser

• In un colloquio fra applicazioni questo schema presentadue elementi critici:– Gli URL sono uno strumento troppo rudimentale per

esprimere richieste complesse e articolate– L’HTML è in qualche modo un ibrido tra un linguaggio per

descrivere il contenuto informativo e un linguaggio perdescrivere la presentazione. Non c’è una separazionenetta fra forma e contenuto.

Un nuovo modello• Queste considerazioni hanno portato alla definizione di

un nuovo modello in grado di superare questelimitazioni: i web services.

• Si è scelto un approccio di tipo evolutivo:– Continuare ad utilizzare HTTP come protocollo di

trasporto delle informazioni, in modo da riutilizzarel’infrastruttura già esistente e conservare lasemplicità del modello di interazione

– Trovare uno strumento più adeguato per descriveregli elementi del colloquio: la richiesta e la risposta.

• Per quanto riguarda questo secondo aspetto la scelta ècaduta su XML

XML e SOAP• XML è conosciuto soprattutto come linguaggio per la

descrizione di documenti• In realtà è adatto a descrivere qualunque contenuto

informativo, anche molto complesso e articolato• Può quindi essere utilizzato per esprimere sia le richieste

che le risposte, in un modello di interazione come quelloche abbiamo appena delineato

• E’ stato definito un protocollo chiamato SOAP -basato su HTTP e XML - che definisce un modosemplice ed efficace per creare interazioni fraapplicazioni e sistemi attraverso Internet

• SOAP è un protocollo di invocazione remota: permette dirichiedere ad un’applicazione remota di svolgere unadeterminata azione e di restituire dei risultati

7

Cos’è un web service?

“Un WS è un’applicazione software identificata da un URI,le cui interfacce pubbliche e relativi binding sono definiti edescritti in XML. La sua definizione può essere trovata daaltre applicazioni software.Questi ultimi possono poi interagire con il WS seguendo ledirettive presenti nella definizione del servizio, usandomessaggi XML trasportati da protocolli internet.”

(“Web Services Architecture” http://www.w3c.org/TR/2002/WD-ws-arch-20021114)

A web service is defined as:

a standardized way of integrating Web-based applicationsusing XML, SOAP, WSDL and UDDI open standards overan Internet backbone: XML is used to tag the data, SOAP isused to transfer the data, WSDL is used for describing theservice available, and UDDI is used for listing what servicesare available.

web services work on assumption that the functionalitymade available by a company will be exposed as aservice.

In middleware terms, a service is a procedure, method,or object vith a a stable, published interface that can beinvoked by clients.

The invocation, and this very important, is made by aprogram. Thus, requesting and executing a serviceinvolves a program calling another program.

Web services assume that services are looselycoupled, since in general they are defined, developedand managed by different companies

Web services are analogous to sophisticated wrapperstha incapsulate one or more applications by providing anunique interface and a web access.

Introduzione

• Interazione tra applicazioni web

• Modello di interazione tra applicazioni basato sustandard esistenti o emergenti:

- HTTP (Hypertext Transfer Protocol)- XML (Extensible Markup Language)- SOAP (Single Object Access Protocol)- WSDL (Web Services Description Language)- UDDI (Universal Description Discovery and Integration)

Definizione di web services

• Un web service è un’interfaccia che descrive uninsieme di operazioni accessibili sulla rete tramitemessaggi standardizzati XML.

• Un Web service è descritto usando una notazione XMLformale standard (service description).

• La service description contiene tutte le informazioninecessarie per l’interazione con il servizio: il formatodei messaggi (relativi alle operazioni), il protocollo ditrasporto e la localizzazione del servizio.

L’interfaccia nasconde i dettagli di implementazione delservizio (hardware, software, linguaggio diprogrammazione).

Un web service corrisponde ad una specifica azione o adun insieme di azioni.

Può essere usato da solo o con altri web services perrealizzare una transazione complessa.

The Web Services Model -

ServiceProducer

ServiceConsumer

ServiceRegistry

Publ

ish BindFind

ServiceDescription

ServiceDescription

Service

WSDL,UDDI

WSDL,UDDI

Ruoli in una architettura web services

Service producer.E’ il proprieterio del servizio. Da un punto di vistaarchitetturale, rappresenta il nodo che contiene il servizio.

Service consumerE’ l’applicazione che sta cercando, chiamando o iniziandoun’interazione con un servizio. Un service consumer puòessere un browser o un’applicazione (es., un altro webservice)

Service registerRegistro che contiene le descrizioni di servizi pubblicate surichiesta dei service producer e ricercate dai serviceconsumer.

Operazioni in una architettura web services

•PublishPer essere accessibile una descrizione di un servizio deveessere pubblicata in modo che il service consumer la possaritrovare.•FindL’operazione di find può avvenire in due fasi distinte per ilconsumer: a tempo di progetto del programma per ricercarela descrizione dell’interfaccia, a run time per effettuare ilbinding del servizio richiesto.•BindL’interazione con un servizio ha luogo usando le informazionidi binding nella descrizione del servizio per localizzare echiamare il servizio

Web Services – Come funziona?

• Il service consumer si collega ad un registro UDDI (internet ointranet)

• Ricerca (per categorie, per fornitore, ecc…) il servizio che gliinteressa (esempio: web services che fornisca le quotazioni dimercato)

• Trova la descrizione del servizio (funzionalità, dove collegarsi,come invocarlo)

• Si collega al server del fornitore del servizio ed usufruisce delservizio

• il service consumer è un’applicazione software

I web services sono applicazioni web cheforniscono servizi ad altre applicazioni web

Web Services – Tecnologie

• SOAP – Simple Object Access Protocol – Protocollo per loscambio di informazioni in un architettura distribuita edecentralizzata . E’ un protocollo di invocazione remota:permette di richiedere ad un’applicazione remota di svolgereuna determinata azione e di restituire dei risultati. Basato suXML e HTTP

• WSDL – Web Services Definition Language – Standard utilizzatoper la descrizione di un web service; fornisce cosa un serviziopuò fare (richieste, risposte e parametri) dove risiede e comechiamarlo.Basato su XML

• UDDI – Universal Description, Discovery and Integration –Standard utilizzato per la pubblicazione di servizi in rete

Web Services – SOAP

Il richiedente fa una richiesta (SOAP request), il server ascolta suuna porta, accetta la richiesta, esegue il servizio (service) ed inviail risultato al richiedente (SOAP response)

Client Server

SOAP request

SOAP response

Service

SOAP header

header block

SOAP envelop

SOAP body

body block

Rappresentazione schematica di un messaggio SOAP

Web Services – Esempio di richiesta SOAP

POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "Some-URI"

<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 OKContent-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 linguaggio WDSL (Web Services Definition Language),

basato sempre su XML, svolge proprio questa funzione• WDSL dice:

– Cosa un servizio può fare (richieste, risposte eparametri)

– Dove risiede– Come invocarlo

• Vediamo il documento WSDL che descrive il servizio acui 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 unmessaggio 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 dautilizzare per accedervi:

<service name="StockQuoteService"> <port name="StockQuotePort“ binding="tns:StockQuoteBinding"> <soap:addresslocation="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 siaper 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 invocateattraverso il web.

• Permettono di realizzare interazioni fra sistemi attraversoInternet e consentono di integrare funzioni applicativedistribuite.

• 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 loscheletro dei client e dei server sulla base di WSDL

• Il vantaggio fondamentale rispetto a CORBA/IIOP è la possibilità dipassare 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ù blandofra client e server