La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

SOAP (Simple Object Access Protocol)

Presentazioni simili


Presentazione sul tema: "SOAP (Simple Object Access Protocol)"— Transcript della presentazione:

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

2 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
Stack dei WS SOAP - Simple Object Access Protocol

7 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 Elaborazione Messaggi
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 SOAP - Simple Object Access Protocol

15 Elaborazione Messaggi
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 SOAP - Simple Object Access Protocol

16 SOAP - Simple Object Access Protocol
Formato Messaggi 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) SOAP - Simple Object Access Protocol

17 SOAP - Simple Object Access Protocol
Formato Messaggi 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 SOAP - Simple Object Access Protocol

18 SOAP - Simple Object Access Protocol
Formato Messaggi SOAP Envelope <names:Envelope dichiarazione namespace> <names:Header> attributi del messaggio </names:Header> <names:Body> messaggio <names:Fault> gestione errori </names:Fault> </names:Body> </names:Envelope> SOAP Header Parti dell’Header SOAP Body Dati da spedire SOAP Fault SOAP - Simple Object Access Protocol

19 SOAP - Simple Object Access Protocol
Envelope 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= </SOAP-ENV:Envelope> SOAP - Simple Object Access Protocol

20 SOAP - Simple Object Access Protocol
Header 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 SOAP - Simple Object Access Protocol

21 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol

26 SOAP - Simple Object Access Protocol
SOAP Request POST /InStock HTTP/1.1 Host: 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 - Simple Object Access Protocol
SOAP Response HTTP/ 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 SOAP - Simple Object Access Protocol
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 SOAP - Simple Object Access Protocol
Riferimenti Autori Vari, Java Web Service “Tutto & Oltre”, Apogeo SOAP Version 1.2 Part 0: Primer W3C Recommendation 24 June 2003 SOAP - Simple Object Access Protocol


Scaricare ppt "SOAP (Simple Object Access Protocol)"

Presentazioni simili


Annunci Google