10110 01100 01100 01011 01011 1 Reti di Calcolatori MODELLI ISO/OSI e TCP/IP.
10110 01100 01011 Laboratorio di RETI DI CALCOLATORIunina.stidue.net/Applicazioni...
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