10110 01100 01011 Laboratorio di RETI DI CALCOLATORIunina.stidue.net/Applicazioni...

18
10110 10110 01100 01100 01011 01011 Laboratorio di RETI DI CALCOLATORI A.A. 2009-2010 I WEB SERVICES Carlo Mastroianni 10110 10110 01100 01100 01011 01011 Laboratorio di Reti di Calcolatori - Orario lunedì, 11:30-13:30, aula 40B mercoledì, 10:00-11:30, laboratorio settimo piano venerdì, 10:30-13:30, laboratorio settimo piano in totale 10 ore di lezione e 20 ore di laboratorio (due gruppi) Ricevimento studenti: ICAR-CNR, DEIS, cubo 41c, 1° piano

Transcript of 10110 01100 01011 Laboratorio di RETI DI CALCOLATORIunina.stidue.net/Applicazioni...

1011010110

01100 01100

0101101011

Laboratorio di RETI DI CALCOLATORI

A.A. 2009-2010

I WEB SERVICES

Carlo Mastroianni

1011010110

01100 01100

0101101011

Laboratorio di Reti di Calcolatori - Orario

lunedì, 11:30-13:30, aula 40Bmercoledì, 10:00-11:30, laboratorio settimo pianovenerdì, 10:30-13:30, laboratorio settimo piano

in totale 10 ore di lezione e 20 ore di laboratorio (due gruppi)

Ricevimento studenti: ICAR-CNR, DEIS, cubo 41c, 1° piano

1011010110

01100 01100

0101101011

Argomenti

Introduzione ai Web ServicesIl (meta)linguaggio XMLGli standard dei Web Services:

SOAP, WSDL, UDDI

1011010110

01100 01100

0101101011

Motivazioni

Uno dei problemi principali nell’industria è quello di integrare applicazioni informatiche sviluppate in maniera indipendente:

Gran numero di tecnologie eterogenee esistenti

Proliferazione delle applicazioni distribuite

La cosiddetta integrazione applicativa può essere considerata a diversi livelli:

All’interno della stessa azienda

Tra partner dell’azienda

Tra l’azienda ed utenti generici

1011010110

01100 01100

0101101011

Integrazione

L’integrazione è necessaria quando un processo coinvolge diversi sistemi informatici

Sfruttare Internet come piattaforma globale di integrazione è un’opportunità notevole, soprattutto per l’integrazione tra diverse aziende

L’integrazione è però resa difficile dalle politiche di sicurezza– ad es. firewall aziendali, restrizioni d’accesso, etc.

1011010110

01100 01100

0101101011

Web Services

Un Web Service è un’applicazione messa a disposizione (pubblicata) da una macchina ed accessibile attraverso protocolli standard diInternet (in genere http su porta 80 per evitare il blocco dei firewall)

I Web Services (WS) presentano le seguenti caratteristiche

– Interoperabilità: un WS può essere invocato da un client situato in una piattaforma tecnologica diversa da quella su cui è eseguito il servizio

– Incapsulamento: gli utilizzatori di un WS sono ignari dei dettagli dell’implementazione, conoscono solo l’interfaccia

– Accessibilità: un WS può essere reso pubblicamente disponibile per l’utilizzo

1011010110

01100 01100

0101101011

Web Services: standard

Gli standard utilizzati per i WS sono tutti dialetti di XML

SOAP (Simple Object Access Protocol): descrive un protocollo basato su XML che definisce i meccanismi con cui un WS è invocato ed il formato dell’input e dell’output (richiesta e risposta)

WSDL (Web Service Definition Language): descrive l’interfaccia esterna di un Web Service affinché uno sviluppatore possa creare un client capace di invocarlo

UDDI (Universal Discovery, Description and Integration): è un registro contenente informazioni utili per la scoperta e l’accesso ai Web Services

1011010110

01100 01100

0101101011

InternetInternet

GET/POST Request

HTML Response

Server (s)

InternetInternet

SOAP Request

SOAP Response

Server (s)Client

Web e Web Services: confronto

WEB:

un browser richiede una pagina Web tramite HTTP

Web Service:

un client (es. un programma Java) invoca un Web Service tramite SOAP ed HTTP

1011010110

01100 01100

0101101011

Web Services: riassumendo…

Un Web Service è un’applicazione messa a disposizione (pubblicata) da una macchina ed accessibile in genere sulla porta 80 (o 8080 nei test).

L’uso della porta 80 permette di evitare il filtraggio dei firewall. Infatti la porta 80, usata per il Web, è quasi sempre lasciata aperta.

I Web Services sono una tecnica di Remote Procedure Call (RPC).

I messaggi inviati e ricevuti da un Web Service, e le modalità di interazione, sono codificati tramite il protocollo SOAP.

L’interfaccia – cioè l’insieme delle operazioni - offerta da un Web Service è descritta in un documento WSDL.

Sia SOAP che WSDL sono “dialetti” del meta-linguaggio XML.

1011010110

01100 01100

0101101011

Web Services: pubblicazione e utilizzo

1011010110

01100 01100

0101101011

Come funzionano i Web Services

Il fornitore del servizio realizza il WS e lo pubblica in un registro UDDIIl client ricerca il WS nel registro UDDIIl client recupera dall’UDDI il documento WSDL che definisce l’interfaccia del servizioIl client costruisce il proxy per l’invocazione del servizioIl client invoca il servizio e riceve la rispostaNB: le API di ricerca e di pubblicazione di UDDI sono anch’esse Web Services!

1011010110

01100 01100

0101101011

XML

È un linguaggio per rappresentare dati strutturati

1011010110

01100 01100

0101101011

Utilizzazioni di XML

1. XML è usato per costruire un sito Web concentrandosi solo sul contenuto. Lo stile è definito a parte, ed è indipendente dal contenuto.

2. XML è un formato standard di interscambio dati. Due applicazioni possono tradurre i loro dati in un formato XML su cui si accordano.

• è possibile definire uno schema DTD (Document Type Definition) che determina la struttura di una classe di documenti XML.

• il DTD definisce le parti obbligatorie ed opzionali di un documento XML valido, cioè conforme a tale DTD.

• ad esempio una libreria ed una casa editrice possono accordarsi su un DTD che definisce il formato dei documenti XML che descrivono i libri.

3. XML è usato per definire il formato dei parametri nell’invocazione di un Web Service.

1011010110

01100 01100

0101101011

Documento DTD

DTD che definisce un articolo di rivista.

(1) <!ELEMENT article (title, author+,journal)>(2) <!ELEMENT title (#PCDATA)>(3) <!ELEMENT author (name, affiliation?)>(4) <!ELEMENT name (#PCDATA)>(5) <!ELEMENT affiliation (#PCDATA)>(6) <!ELEMENT journal (jname, volume, number?, month?, pages, year)>(7) <!ELEMENT jname (#PCDATA)>(8) <!ELEMENT volume (#PCDATA)>(9) <!ELEMENT number (#PCDATA)>(10) <!ELEMENT month (#PCDATA)>(11) <!ELEMENT pages (#PCDATA)>(12) <!ELEMENT year (#PCDATA)>

1011010110

01100 01100

0101101011

Documento XML

Documento XML conforme al DTD della slide precedente

(1) <?xml = version "1.0">(2) <!DOCTYPE article SYSTEM "article.dtd">(3) <article>(4) <title> Prudent Engineering Practice for Cryptographic Protocols</title>(5) <author><name>M. Abadi</name></author>(6) <author><name>R. Needham</name></author>(7) <journal>(8) <jname>IEEE Transactions on Software Engineering</jname>(9) <volume>22</volume>(10) <number>12</number>(11) <month>January</month>(12) <pages>6 – 15</pages>(13) <year>1996</year>(14) </journal>(15) </article>

1011010110

01100 01100

0101101011

Schemi XML

Gli Schemi XML (XML Schema) sono nati con lo stesso scopo dei DTD:

Specificare la struttura dei documenti.Specificare il tipo dei dati utilizzabili all’interno di elementi e attributi.

nei DTD, il tipo di dato elementari degli elementi poteva essere solo testo.XML Schema consente di definire tipi complessi.

1011010110

01100 01100

0101101011

Vantaggi di XML Schema rispetto a DTD

I DTD usano una sintassi non XML.Perché costringere gli sviluppatori ad imparare le regole di un nuovo linguaggio?Perché scrivere parser XML che debbano leggere e validare anche formati non XML?

I DTD hanno pochi tipi di dato.Esistono tipi di dato molto noti che si vorrebbero poter sfruttare (interi, reali, data/ora, ecc.) e che infatti sono sfruttati dagli XML Schema

1011010110

01100 01100

0101101011

Un DTD di esempio…

Gli elementi in grassetto fanno parte della sintassi DTD.

Gli elementi non in grassetto fanno parte della nuova sintassi che stiamo definendo.

Gli elementi delle due sintassi non sono ben distinti, sono mescolati!

<!ELEMENT artist (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT year (#PCDATA)><!ELEMENT comment (#PCDATA)><!ELEMENT length (#PCDATA)>

<!ELEMENT song (artist?, title, year?, comment?, length)><!ELEMENT CD (song+)>

1011010110

01100 01100

0101101011

…e lo Schema Corrispondente…<xs:element name="artist" type="xs:string"/><xs:element name="comment" type="xs:string"/><xs:element name="length" type="xs:string"/><xs:element name="title" type="xs:string"/><xs:element name="year" type="xs:string"/>

<xs:element name="song"><xs:complexType>

<xs:sequence><xs:element ref="artist" minOccurs="0"/><xs:element ref="title"/><xs:element ref="year" minOccurs="0"/><xs:element ref="comment" minOccurs="0"/><xs:element ref="length"/>

</xs:sequence></xs:complexType>

</xs:element><xs:element name="CD">

<xs:complexType><xs:sequence>

<xs:element ref="song" maxOccurs="unbounded"/></xs:sequence>

</xs:complexType></xs:element>

<!ELEMENT artist (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT year (#PCDATA)><!ELEMENT comment (#PCDATA)><!ELEMENT length (#PCDATA)>

<!ELEMENT song(artist?, title, year?, comment?, length)>

<!ELEMENT CD (song+)>

Questo Schema definisce lo stesso linguaggio del DTD visto in precedenza. I frammenti del DTD sono affiancati alla parte di schema che li sostituisce.

1011010110

01100 01100

0101101011

…Visto Graficamente

Questa figura mostra una rappresentazione grafica del linguaggio definito dallo schema precedente. La struttura molto raffinata degli Schemi permette di manipolarli con tool grafici avanzati.

1011010110

01100 01100

0101101011

Namespace XML

Le specifiche di schemi XML sono definite in file .xsd

Una specifica di schema XML inizia con le definizioni dei namespace XML.

I namespace consentono di comporre un singolo documento XML a partire da diversi schemi XML.

I namespace consentono di identificare da quale schema proviene un tag.

Si evitano così i conflitti di nomi: un nome è definito all’interno di uno specifico namespace.

1011010110

01100 01100

0101101011

Namespace dell’esempio

Uno schema definisce un vocabolario di elementi, attributi, ecc.Il vocabolario è univocamente indicato dal suo namespace di appartenenza.Un documento XML usa gli elementi definiti dagli Schemi facendo riferimento al loro namespace.

xmlns = "http://dellapenna.univaq.it/CD"

targetNamespace ="http://dellapenna.univaq.it/CD"

CD.xsd

Definisce gli elementi del namespace http://dellapenna.univaq.it/CD

Album.xml

Usa gli elementi del namespace http://dellapenna.univaq.it/CD e livalida tramite lo schema CD.xsd

1011010110

01100 01100

0101101011<?xml version="1.0" encoding="UTF-8"?><xs:schema

xmlns:xs="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified"targetNamespace ="http://dellapenna.univaq.it/CD"xmlns ="http://dellapenna.univaq.it/CD "

><xs:element name="artist" type="xs:string"/><xs:element name="comment" type="xs:string"/><xs:element name="length" type="xs:string"/><xs:element name="title" type="xs:string"/><xs:element name="year" type="xs:string"/>

<xs:element name="song"><xs:complexType>

<xs:sequence><xs:element ref="artist" minOccurs="0"/><xs:element ref="title"/><xs:element ref="year" minOccurs="0"/><xs:element ref="comment" minOccurs="0"/><xs:element ref="length"/>

</xs:sequence></xs:complexType>

</xs:element>

Costruzione di un namespace in CD.xsd

Gli elementi della sintassi XML Schema provengono dal namespace http://www.w3.org/2001/XMLSchema

Negli Schemi, la nozione di namespace è parte fondamentale della definizione di un linguaggio.

Gli elementi definiti dallo schema sono associati ad un namespace di destinazione (targetNamespace), che di solito è anche il namespace di default del documento (xmlns)

Gli elementi standard della sintassi XMLSchema (es. “element”, “sequence”) vengono distinti associandoli al loro specifico namespace (prefisso “xs”).

1011010110

01100 01100

0101101011<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"

elementFormDefault="qualified"targetNamespace ="http://dellapenna.univaq.it/CD"xmlns ="http://dellapenna.univaq.it/CD" >

<xs:element name="artist" type="xs:string"/><xs:element name="comment" type="xs:string"/><xs:element name="length" type="xs:string"/><xs:element name="title" type="xs:string"/><xs:element name="year" type="xs:string"/>

<xs:element name="song"><xs:complexType>

<xs:sequence><xs:element ref="artist" minOccurs="0"/><xs:element ref="title"/><xs:element ref="year" minOccurs="0"/><xs:element ref="comment" minOccurs="0"/><xs:element ref="length"/>

</xs:sequence></xs:complexType>

</xs:element>

elementFormDefault posto a “qualified” indica che tutti i documenti che fanno uso degli elementi definiti in questa sintassi dovranno sempre dichiararne il namespace.

Gli elementi della sintassi definita in questo schemasaranno inseriti nel (nuovo) namespace

http://dellapenna.univaq.it/CD

La dichiarazione del default namespace indica al parserche gli elementi presenti nel documento senza esplicito prefisso di namespace vanno considerati come appartenenti al namespace di default http://dellapenna.univaq.it/CD, che in questo caso è anche il targetNamespace!

Costruzione di un namespace in CD.xsd

1011010110

01100 01100

0101101011

Namespace negli Schemi

schema

element

complexType

sequence

attribute

maxOccurs

targetNamespace

string

artist

comment

length

year

title

song

CD

http://www.w3.org/2001/XMLSchema http://dellapenna.univaq.it/CD

Riassumendo, all’interno del documento XMLSchema visto in precedenza sono presenti due distinti set di elementi, ciascuno associato a un diverso namespace.

1011010110

01100 01100

0101101011

Uso di uno Schema in un documento XML

1

2

<?xml version="1.0"?><CDxmlns="http://dellapenna.univaq.it/CD"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance“xsi:schemaLocation="http://dellapenna.univaq.it/CD.xsd“>

<song><title>African Bamba</title><length>4:42</length>

</song>

<song><artist>Santana</artist><title>Corazon Espinado</title><comment>

First Hit from the album</comment><length>4:36</length>

</song>

</CD>

Indichiamo al parser che tutti gli elementi del documento (non qualificati) vanno considerati parte del namespace indicato

Indichiamo al parser la provenienza del namespace XSI (schema instance).

Questo namespace contiene gli elementi di XMLSchema usati anche nei documenti istanza, cioè nei file XML.

L’attributo schemaLocation, proveniente dal namespace Schema Instance, indica al parser dove prelevare lo schema per la validazione del documento. Gli elementi da validare devono trovarsi nello stesso namespace dichiarato come targetNamespace nello schema CD.xsd

1011010110

01100 01100

0101101011

Namespace in un documento WSDL

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

targetNamespace="http://grids.ucs.indiana.edu:8045/GCWS/services/Echo" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://grids.ucs.indiana.edu:8045/GCWS/services/Echo" xmlns:intf="http://grids.ucs.indiana.edu:8045/GCWS/services/Echo" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Questo documento WSDL specifica l’interfaccia di un servizio chiamato “Echo”

Qui si riportano le intestazioni del documento WSDL

1011010110

01100 01100

0101101011

Quiz sui namespace

Qual è il namespace di default del documento?

Cosa vuol dire xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"?

Cosa vuol dire <wsdl:xyz>?

http://www.w3c.org/2001/XMLSchema è un URI o un URL?

Qual è il namespace target del documento?

A cosa serve il namespace target ?

1011010110

01100 01100

0101101011

Risposte al Quiz

http://schemas.xmlsoap.org/wsdl/

Gli elementi dello schema WSDL che appaiono in questo documento devono essere preceduti dal label (o prefisso) wsdl:

L’elemento <xyz> appartiene allo schema che è stato associato al prefisso wsdl: in questo documento.

Tecnicamente, è un URI (Uniform Resource Identifier), cioè un nome strutturato. Tuttavia, esiste anche l’URL (Uniform Resource Locator) corrispondente.

Gli URL sono casi speciali di URI. Gli URIs sono nomi/identificatori. Gli URL sono anche pagine del Web.

http://grids.ucs.indiana.edu:8045/GCWS/services/Echo

Il target namespace contiene gli elementi ed i tipi definiti in questo XML schema e viene usato per validare tutti i documenti XML conformi a questo schema.

1011010110

01100 01100

0101101011

Simple Object Access Protocol (SOAP)

Standard W3C per l’invocazione di servizi attraverso XML

Lo standard contiene:– la specifica dei messaggi di input e di output– le regole di codifica per i tipi di dati

SOAP utilizza HTTP per la trasmissione dei dati– Permette di oltrepassare i firewall– È interpretato dal web server

1011010110

01100 01100

0101101011

SOAP: struttura del messaggio

Elementi esterni: envelope ed attachments

Elementi interni: l’header

Info su: sicurezza, routing, formati, ecc…

Elementi interni: il body

Contenuto vero e proprio del messaggio (richiesta al Web Service o risposta)

SOAPEnvelope

HeaderEntries

[Header Element]

Body Element

[FaultElement]

[Attachment]

1011010110

01100 01100

0101101011

Web Service Description Language (WSDL)

Standard W3C per la descrizione in XML dell’interfaccia dei Web Services– Contiene anche la locazione del servizio

Un file WSDL è associato ad un Web Service ed è sufficiente ad un client per invocare il servizio

1011010110

01100 01100

0101101011

WSDL: struttura del documento

Descrive:Cosa un WS può fareDove risiedeCome invocarlo

I documenti WSDL possono essere resi disponibili su registri UDDI

WSDL1.1 DocumentStructure

WSDLDocument

[Types]

{Messages}

{Port Types}

{Bindings}

{Services}

1011010110

01100 01100

0101101011

Componenti di un documento WSDL

Un documento WSDL è costituito essenzialmente da 5 elementi XML:

Types: i tipi di dati usati dal web service

Messages: definiti come composizione o aggregazione dei tipi elementari.

Port Types: una PortType è un’interfaccia che contiene la definizione di operazioni aventi messaggi di input e di output

Bindings: fornisce dettagli implementativi per il tipo di porta, informazioni su come realizzare (implementare) la porta ed in particolare sul metodo di trasporto (soap, http, smtp,...)

Services: indica dove le porte sono fisicamente realizzate (deployed). Combina tutti gli elementi precedenti.

1011010110

01100 01100

0101101011

Universal Description Discovery Integration (UDDI)

E’ uno standard per distribuire e reperire Web Services

Un registro UDDI contiene i documenti WSDL associati ad un insieme di servizi, ed informazioni addizionali riguardanti le credenziali d’accesso richieste dai servizi

Accesso ai registri UDDI:

Pubblico: chiunque può effettuare ricerche

Privato: ricerca limitata ad una singola azienda

Ibrido: registro disponibile oltre i confini aziendali ma con restrizioni di accesso per la ricerca