Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una...

18
Web Services

Transcript of Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una...

Page 1: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Web Services

Page 2: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Definizione di Web Service

“Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante messaggistica XML [WSCA10].”

“Per Web Service si intende un servizio riutilizzabile che può essere richiamato attraverso tecnologie Internet (come HTTP, FTP o IMAP) e che dialoga in XML.”

Page 3: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Vantaggi dei Web Services

• accoppiamento debole (“loosely coupled”)

– disaccoppiamento tra client e server

– non servono tecnologie specifiche di interfaccia con la rete (e.g. CORBA, DCOM) sul lato client o server

• “platform neutral”

– interoperabilità tra client e server indipendente dalle piattaforme

• interoperabili attraverso Internet

– basati su SOAP, HTTP e XML

• descrivibili mediante XML

– WSDL

Page 4: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

UtilitàI Web Services possono essere utilizzati: nelle applicazioni B2B per interfacciare

diversi partner commerciali, nelle applicazioni B2C per fornire servizi

all'utente finale.

Es: un servizio che fornisce le quotazioni di

borsa un servizio di traduzione da una lingua ad

un'altra

Page 5: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Struttura dei Web ServicesSi possono distinguere varie componenti:

(Universal Definition and Discovery Interface) registro che permette la pubblicazione e la successiva ricerca dei servizi.(Web Services Definition Language) strumento per la definizione dei servizi, definiscono le interfacce e le modalità di colloquio.(Simple Object Access Protocol) protocollo a basso livello per la comunicazione di messaggi XML

Protocolli di trasporto nativi di Internet (http, ftp, altro)

Page 6: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Tipologie di interazione con i servizi

Le tipologie di interazione che possono essere descritte da WSDL sono molteplici:

ONE-WAY – il client invia semplicemente al servizio un messaggio, è una sorta di notifica.

REQUEST-RESPONSE – a una richiesta del client il server fornisce una risposta.

SOLICIT-RESPONSE – il servizio esegue una notifica al client e quest’ultimo gli invia un messaggio di risposta.

NOTIFICATION – prevede l’invio di messaggi dal servizio al client senza risposta da parte di quest’ultimo.

Page 7: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

WSDL: Web Services Description Language

WSDL è un formato XML per la descrizione di servizi di rete.

Le specifiche di WSDL definiscono la struttura di un

documento XML che contiene:

le definizioni dei messaggi di input/output di un determinato servizio le relazioni tra questi, ovvero le operazioni che si possono compiere il collegamento fisico ad un determinato “end-point” che costituisce il punto di fornitura fisico del servizio web.

Page 8: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

<wsdl:definitions targetNamespace="http://localhost:8080/axis/CiaoATutti.jws"><!-- WSDL created by Apache Axis version: 1.2beta

Built on Jun 23, 2004 (05:03:42 CEST) -->

<wsdl:message name="ciaoRequest"></wsdl:message>

<wsdl:message name="ciaoResponse">

<wsdl:part name="ciaoReturn" type="xsd:string"/>

</wsdl:message>

<wsdl:portType name="CiaoATutti">

<wsdl:operation name="ciao">

<wsdl:input message="impl:ciaoRequest" name="ciaoRequest"/>

<wsdl:output message="impl:ciaoResponse" name="ciaoResponse"/>

</wsdl:operation>

</wsdl:portType>

Esempio di WSDL (1)

contiene la struttura dei messaggi di scambio del servizio

Definisce le operazioni esposte, per ogni funzione è definito il messaggio di input ed output

Page 9: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Esempio di WSDL (2)<wsdl:binding name=“CiaoMondoSoapBinding" type="impl:CiaoMondo">

<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="ciao"><wsdlsoap:operation soapAction=""/>

<wsdl:input name="ciaoRequest"><wsdlsoap:body

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/>

</wsdl:input>

<wsdl:output name="ciaoResponse"><wsdlsoap:body

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/CiaoMondo.jws" use="encoded"/>

</wsdl:output></wsdl:operation>

</wsdl:binding>

<wsdl:service name="CiaoMondoService"><wsdl:port binding="impl:CiaoMondoSoapBinding" name="CiaoMondo">

<wsdlsoap:address location="http://localhost:8080/axis/CiaoMondo.jws"/>

</wsdl:port></wsdl:service>

</wsdl:definitions>

contiene il collegamento tra il portType e l’end-point fisico in termini di protocollo di comunicazione, ad esempio SOAP

contiene la definizione del servizio in termini della sua descrizione e della posizione fisica

Page 10: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

SOAP: Simple Object Access Protocol

SOAP è un protocollo leggero per lo scambio di informazioni in un ambiente distribuito e decentrato.

Le specifiche di SOAP descrivono principalmente la struttura dei documenti XML utilizzati per lo scambio di informazioni.

Le specifiche SOAP, inizialmente proposte da Microsoft, sono state condivise da IBM e sottoposte al W3C per la standardizzazione.

Page 11: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv = http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body> <ciaoResponse

soapenv:encodingStyle="http://...<ciaoReturn xsi:type="xsd:string">

Ciao a tutti</ciaoReturn>

</ciaoResponse> </soapenv:Body>

</soapenv:Envelope>

Esempio di risposta SOAP

SOAP:Envelope, è la “busta” che contiene tutte le informazioni.

SOAP:Body – contiene il messaggio vero e proprio espresso in qualche tipo di codifica, per esempio l’encoding SOAP

Page 12: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Cosa è necessario…Per implementare un webservice ed utilizzarlo sono necessari i seguenti componenti:

Lato server:

Application Web Server – Apache TomcatSOAP Engine – Apache Axis

Lato Client:

BrowserJAX-RPC Client

Page 13: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Apache AxisAxis è un SOAP engine

E’ un framework con cui costruire dei processori SOAP sia lato server che client

La versione 1.1 è una stabile ed affidabile base su cui implementare dei Java Web Services

Può essere usato come server stand-alone o come plug-in per servlet engine

Page 14: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Apache AxisLe specifiche JAX-RPC sono la base su cui sono sviluppati i client che usano Axis

L’endpoint è un URL che punta ad un server che processa messaggi SOAP

Ci sono due modi per usare JAX-RPC per collegarsi ad un endpoint SOAP:

Usare java.xml per comporre a mano il messaggio SOAP

Usare Axis per creare una classe wrapper per il web service

Page 15: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Schema Globale

Page 16: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Un esempio di WSDLnome del servizio

punto di contatto

formato input

formato output

nome della funzione

specifica della funzione

Page 17: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Un esempio di messaggiorichiesta di un servizio via HTTP

POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "http://example.org/2001/06/quotes"

<env:Envelope xmlns:env="http://www.w3.org/2001/06/soap-envelope" > <env:Body> <m:GetLastTradePrice env:encodingStyle="http://www.w3.org/2001/06/soap-encoding" xmlns:m="http://example.org/2001/06/quotes"> <symbol>DIS</symbol> </m:GetLastTradePrice> </env:Body> </env:Envelope>

SOAP Envelope

SOAP Body

nome del servizio

parametri in input

HTTP Header

Page 18: Web Services. Definizione di Web Service Un servizio web è un'interfaccia che descrive una collezione di operazioni, accessibili attraverso una rete mediante.

Un esempio di messaggiorisposta da un servizio via HTTP

HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn

<env:Envelope xmlns:env="http://www.w3.org/2001/06/soap-envelope" > <env:Body> <m:GetLastTradePriceResponse env:encodingStyle="http://www.w3.org/2001/06/soap-encoding" xmlns:m="http://example.org/2001/06/quotes"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </env:Body></env:Envelope>

SOAP Envelope

SOAP Body

risposta del servizio

output del servizio

HTTP Header