soap (simple object access protocol) laurea magistrale in informatica reti 2 (2006/07) dott....
TRANSCRIPT
SOAP(Simple Object Access Protocol)
Laurea Magistrale Laurea Magistrale in Informaticain Informatica
Reti 2 (2006/07)Reti 2 (2006/07)
dott. Federico [email protected]
SOAP - Simple Object Access Protocol 2
Agenda
Web Service ed XML Stack tecnologico dei Web Service Simple Object Access Protocol Envelope, Header e body Codifica SOAP
SOAP - Simple Object Access Protocol 3
Web Service ed XML
XML è una famiglia di tecnologie: XML 1.0, XML Schema, XML namespace, Xpointer, Xpath, Xlink, XSLT, DOM, ...
Nel contesto WS la famiglia di tecnologie XML viene utilizzata:
per specificare il formato dei messaggi da scambiare per consentire la validazione stessa dei dati scambiati per definire gli stessi WS
Si richiede sempre la definizione di un accordo sul significato degli elementi XML utilizzati
SOAP - Simple Object Access Protocol 4
Tecnologie dei Web Service
L’infrastruttura dei WS si basa su diverse tecnologie XML per il trasporto, lo scambio e la trasformazione dei dati tra programmi e applicazioni
In particolare: XML (Extensible Markup Language), la base sulla quale
sono fondati i Web Service WSDL (Web Service Description Language), un formato
XML per descrivere le interfacce esterne dei WS
SOAP - Simple Object Access Protocol 5
Tecnologie dei Web Service
SOAP (Simple Object Access Protocol), un formato XML che fornisce un meccanismo di packaging dei messaggi, attraverso la definizione di una “busta” per la creazione e trasmissione dei messaggi XML
UDDI (Universal Description, Discovery and Integration), un meccanismo per il registry (registrazione) e il discovery (ritrovamento) dei WS, utilizzato per registrare, categorizzare, ritrovare le interfacce WS
SOAP - Simple Object Access Protocol 6
Stack dei WS
SOAP - Simple Object Access Protocol 7
Scenario d’uso
Un programma che deve inviare un documento a un Web Service:
Trasforma i suoi dati in input in un documento XML, secondo le esigenze del WS
Invia il documento in una busta SOAP al WS (descritto in WSDL)
Quando il WS riceve un documento, lo parserizza e processa il documento immettendolo in un flusso di elaborazione
SOAP - Simple Object Access Protocol 8
Introduzione a SOAP
Il Simple Object Access Protocol (SOAP) è una delle specifiche più importanti nelle tecnologie WS. SOAP:
Definisce un meccanismo per il trasporto dei dati da un punto all’altro della rete
Consente al mittente e al destinatario di un documento XML di disporre di un protocollo comune
Rappresenta una estensione del protocollo HTTP per lo scambio di messaggi XML: consente la spedizione di messaggi XML su HTTP e la relativa ricezione di una risposta
Per gestire correttamente tali messaggi, un server HTTP (Apache o IIS) deve disporre di un SOAP engine (ad esempio Apache AXIS)
SOAP - Simple Object Access Protocol 9
Introduzione a SOAP
Protocollo di comunicazione tra applicazioni Formato per l’invio di messaggi Sviluppato per la comunicazione via Internet Platform independent Language independent Basato su XML Semplice ed estendibile Consente il passaggio dei firewall Sviluppato come standard W3C
SOAP - Simple Object Access Protocol 10
Esempio
<?xml version="1.0"?> <soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header> ... ...
</soap:Header>
<soap:Body>... ... <soap:Fault> ... ... </soap:Fault>
</soap:Body>
</soap:Envelope>
SOAP - Simple Object Access Protocol 11
Introduzione a SOAP
Il W3C definisce: Come deve essere strutturato il messaggio SOAP Cosa rappresentano i dati contenuti nel messaggio Le regole di Binding verso un protocollo di trasporto (ad
esempio HTTP) Come eseguire attraverso SOAP una chiamata a procedura
remota (RPC)
I messaggio SOAP utilizzano una sintassi XML, quindi: I SOAP engine devono qualificare elementi e attributi
utilizzando i namespace nei messaggi generati I messaggi SOAP non contengono DTD, né Processing
Instruction
SOAP - Simple Object Access Protocol 12
SOAP per scambiare messaggi
Lo scambio di messaggi tramite SOAP è fondamentalmente una trasmissione da un mittente ad un destinatario attraverso intermediari
Un intermediario SOAP è un’applicazione capace sia di ricevere che di inoltrare messaggi SOAP
SOAP - Simple Object Access Protocol 13
SOAP e protocolli di trasporto
Per ovviare problemi con firewall si è soliti utilizzare SOAP mediante HTTP
Questo significa che un messaggio SOAP viene spedito come parte di una richiesta (o risposta) HTTP
Un’altra ragione che porta a questa scelta nell’utilizzo di SOAP è che praticamente ogni computer connesso ad una rete supporta traffico HTTP
Comunicazione semplice e leggera tra due applicazioni eseguite indipendentemente dalla piattaforma e connesse mediante una infrastruttura già esistente
SOAP - Simple Object Access Protocol 14
Un’applicazione SOAP che riceve un messaggio deve compiere in ordine le seguenti azioni:
Identificare tutte le parti del messaggio Verificare che tutte le parti identificate nel passo
precedente siano supportate dall’applicazione alla quale è rivolto il messaggio ed elaborarle
Se l’applicazione SOAP alla quale è arrivato il messaggio non è la destinazione finale del messaggio stesso, elabora il messaggio aggiungendo o eliminando informazioni in modo da inoltrare soltanto i dati significativi per il destinatario successivo
Elaborazione Messaggi
SOAP - Simple Object Access Protocol 15
CLIENT APPLICAZIONE
Spedizione messaggio
Identificazione e verifica delle parti del messaggio
Spedizione Risposta
Caso in cui l’applicazione soap è il destinatario finale
Inoltro del messaggio
Elaborazione del messaggio da inoltrare
DESTINAZIONE FINALE
Caso in cui l’applicazione non e’ il destinatario finale
Spedizione Risposta
Elaborazione Messaggi
SOAP - Simple Object Access Protocol 16
Per rendere più semplice e leggibile un messaggio SOAP si è deciso di costruirlo in modo da somigliare, logicamente, ad una lettera
Una busta (Envelope) Informazioni varie per la spedizione del messaggio
(Header) Un documento da spedire (Body)
Busta contenente le informazioni da spedire
Documento con le informazioni richieste
Informazioni sulla spedizione (a differenza di una vera lettera con SOAP queste informazioni sono opzionali)
Formato Messaggi
SOAP - Simple Object Access Protocol 17
Più formalmente un messaggio SOAP è un documento XML consistente in:
Un elemento SOAP Envelope (obbligatorio) che rappresenta la radice del documento XML; tale elemento DEVE essere presente nel documento, PUO’ contenere un Header, DEVE contenere un BODY
Un elemento SOAP Header (opzionale) contenente informazioni aggiuntive per la comprensione e la spedizione del messaggio; è il primo figlio dell’envelope; può avere elementi figli
Un elemento SOAP Body (obbligatorio) contenente le informazioni che si intendono far giungere al destinatario. Al suo interno viene inoltre definito l’elemento Fault usato per la gestione degli errori; viene come primo figlio dopo Header
Formato Messaggi
SOAP - Simple Object Access Protocol 18
SOAP Envelope
SOAP Header
Parti dell’Header
SOAP Body
Dati da spedire
SOAP Fault
<names:Envelopedichiarazione namespace>
<names:Header>attributi del messaggio </names:Header>
<names:Body> messaggio
<names:Fault> gestione errori </names:Fault>
</names:Body> </names:Envelope>
Formato Messaggi
SOAP - Simple Object Access Protocol 19
L’elemento envelope identifica l’inizio e la fine del messaggio, in maniera tale che il ricevente sappia quando l’intero messaggio è stato ricevuto. Si risolve in questo modo il problema di sapere quando la ricezione è completata e si può iniziare a processare il messaggio.
Agisce come meccanismo di packaging
<SOAP-ENV:Envelope xmlns:SOAP-ENV= http://www.w3.org/2001/12/soap-envelope>
…
</SOAP-ENV:Envelope>
Envelope
SOAP - Simple Object Access Protocol 20
Nel messaggio SOAP può nascere l’esigenza di inserire informazioni non facenti parte del messaggio ma fondamentali per la spedizione del messaggio stesso (legati ad esempi a aspetti di sicurezza, transazioni, ecc.).
Esistono alcuni attributi standard che non necessitano di nessun previo accordo fra le parti
è possibile definire, oltre agli attributi standard, dei propri attributi
Gli elementi figli dell’header sono definiti da un nome composto da URI di namespace e nome locale
Header
SOAP - Simple Object Access Protocol 21
Header
Tre attributi per gli elementi nell’Header
Actor Indirizza gli elementi dell’header verso un particolare
endpoint
mustUnderstand Indica l’obbligatorietà o meno di processare
l’informazione a cui si applica, se il nodo non è in grado di comprendere l’elemento si ha un fault
encodingStyle Definisce i tipi di dati usati nell’elemento
SOAP - Simple Object Access Protocol 22
Body
Contiene informazioni per il destinatario del messaggio I figli del body devono essere qualificati da un
namespace Definisce l’elemento fault
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-
envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body> <m:GetPrice xmlns:m="http://www.w3schools.com/prices">
<m:Item>Apples</m:Item> </m:GetPrice> </soap:Body>
</soap:Envelope> Non fanno parte di SOAP, sono application-specific
SOAP - Simple Object Access Protocol 23
Fault element
Se è presente deve apparire come figlio del body Faultcode
Codice del fault Faultstring
Informazioni umane-readable sul fault Faultactor
Informazioni su chi ha causato il fault Detail
Informazioni application-specific relative al body
SOAP - Simple Object Access Protocol 24
Codici di fault
VersionMismatch Namespace non valido per l’Envelope
MustUnderstand Un elemento MustUnderstand=1 non è stato compreso
Client Il messaggio è malformato o contiene informazioni
incorrette
Server Ci sono problemi con il server ed il messaggio non può
essere processato
SOAP - Simple Object Access Protocol 25
Protocollo HTTP
Il client invia una richiesta HTTP che trasporta il messaggio SOAP
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8 Content-Length: 200
Il server processa la richiesta e invia la risposta
200 OK Content-Type: text/plain Content-Length: 200
SOAP - Simple Object Access Protocol 26
SOAP Request
POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice> <m:StockName>IBM</m:StockName>
</m:GetStockPrice> </soap:Body>
</soap:Envelope>
SOAP - Simple Object Access Protocol 27
SOAP Response
HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse> <m:Price>34.5</m:Price>
</m:GetStockPriceResponse> </soap:Body> </soap:Envelope>
SOAP - Simple Object Access Protocol 28
Codifica SOAP
Ogni valore è codificato in un elemento<name>value</name>
SOAP supporta i tipi semplici definiti da XML Schema
Gli array sono codificati come sequenze di elementi<array ...namespace... enc:arrayType=“xsd:String[3]”>
<item xsi:type=“xsd:String”>La stringa</item>...
</array>
SOAP - Simple Object Access Protocol 29
Considerazioni progettuali dell’interfaccia pubblica di un WS
Occorre valutare interfaccia pubblica implementazione interna
L’interfaccia pubblica non necessariamente riflette in maniera speculare l’implementaizone interna ne espone una parte!
Considerare aspetti di latenza della rete ed efficienza
SOAP - Simple Object Access Protocol 30
Considerazioni progettuali dell’interfaccia pubblica di un WS
La sicurezza non si limita alla crittografia
Si deve considerare quali informazioni rendere disponibili Conflitti tra usabilità del servizio e sicurezza dei dati
esposti
Le richieste SOAP viaggiando attraverso la rete sono intrinsecamente più lente delle chiamate locali Per praticità è sempre bene minimizzare l’interazione
tra client e server
L’efficienza è valutata considerando client, server e collegamento di rete
SOAP - Simple Object Access Protocol 31
Riferimenti
Autori Vari, Java Web Service “Tutto & Oltre”, Apogeo
SOAP Version 1.2 Part 0: PrimerW3C Recommendation 24 June 2003
http://www.w3.org/TR/2003/REC-soap12-part0-20030624/