+ All Categories
Home > Documents > SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott....

SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott....

Date post: 01-May-2015
Category:
Upload: pellegrino-lamberti
View: 214 times
Download: 0 times
Share this document with a friend
31
SOAP (Simple Object Access Protocol) Laurea Magistrale Laurea Magistrale in Informatica in Informatica Reti 2 (2006/07) Reti 2 (2006/07) dott. Federico Paoloni [email protected]
Transcript
Page 1: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

SOAP(Simple Object Access Protocol)

Laurea Magistrale Laurea Magistrale in Informaticain Informatica

Reti 2 (2006/07)Reti 2 (2006/07)

dott. Federico [email protected]

Page 2: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 3: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 4: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 5: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 6: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

SOAP - Simple Object Access Protocol 6

Stack dei WS

Page 7: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 8: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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)

Page 9: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 10: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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>

Page 11: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 12: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 13: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 14: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 15: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 16: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 17: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 18: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 19: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 20: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 21: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 22: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 23: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 24: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 25: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 26: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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>

Page 27: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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>

Page 28: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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>

Page 29: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 30: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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

Page 31: SOAP (Simple Object Access Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni Federico.paoloni@unicam.it.

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/


Recommended