SOAP – Simple Object Access Protocol

INTRODUZIONE
Lo scopo fondamentale del protocollo SOAP – Simple Object Access Protocol è lo scambio di informazioni tramite la rete. SOAP ha un nome molto forviante per quanto riguarda la prima parte “Simple Object”, in quanto non ha nulla a che vedere con la programmazione OOP (Object Oriented Programming).
SOAP permette di trasportare dati in formato XML come XML-RPC (Remote Procedure Call), però sebbene SOAP sia più pesante è in grado di incorporare molte altre funzioni e altri formati di scambio dei messaggi.
SOAP si propone in prima batutta come il protocollo universivale per la trasmissione dei dati di RPC. Attualmente esistono anche altri protocolli simili a SOAP per l’invocazione di procedure remote, come ad esempio CORBA(Common Object Request Broker Acces), .NET Remoting, JRMP(Java Method Remote Protocol),…
SOAP nasce con lo scopo di evitare l’uso di complicati bridge per la trasmissione dei messaggi, inoltre esso a differenza di CORBA, .NET Remoting non si basa su tecnologie proprietarie e la sua applicazione è completamente libera ed indipendente dalla piattaforma utilizzata. SOAP consente di scambiare informazioni in un ambiente distribuito:

    Basato su XML
    Capace di gestire informazione strutturata
    Capace di gestire informazione tipata (utilizzo del type system degli schemi XML)
    Non definisce una semantica predefinita, ciò è reso possibile dall’utilizzo dei namespace che ne facilita la customizzazione

messaggio soap

Elementi del messaggio SOAP

Tra i mille vantaggi di SOAP, però si può scorgere un grosso punto debole derivante dalle performance della sua natura testuale, che lo rende più complesso rispetto le sue controparti binarie (CORBA e .NET Remoting).
STRUTTURA DI UN MESSAGGIO SOAP
Un messaggio SOAP è composto da tre parti:
1) Un elemento radice(obbligatorio), il soap envelope;
2) Un elemento header(opzionale);
3) Un elemento body(obbligatorio), dove vi sarà il vero e proprio contenuto del messaggio;
HEADER
Gli headers forniscono un metodo per estendere un messaggio in maniera modulare, se presente l’header esso deve essere il primo figlio di envelope. I successivi figli di un header vengono chiamati header entries. Gli header entries nascono con l’obbiettivo di instradare un messaggio in quanto un messaggio può attraversare diverse applicazioni e piattaforme prima di raggiungere il proprio destinatario. L’attore destinatario di una header entries deve rimuovere la propria header entry prima di instradare nuovamente il messaggio, come è possibile anche vedere nella figura di fianco.
header entry soap message

Passaggio di un messaggio tra più actor


E’ possibile specificare se il destinatario di una header entry deve elaborare o meno il messaggio mediante l’attributo mustUnderstand.

    Se posto a 1, vuol dire che l’attore deve elaborare la entry.
    Se posto a 0, indica che l’attore che l’elaborazione della entry è opzionale.

mustUnderstand

Elaborazione di una header entry


BODY
errori messaggi soap

Fault presenti nei body dei messaggi soap


Il body contiene come anticipato prima il corpo del messaggio, ed esiste un solo elemento predefinto come figlio del body, ossia il FAULT. FAULT fornisce inforzioni circa l’entità degli errori derivanti dall’elaborazione del messaggio.
Il contenuto dell’elemento FAULT è il seguente:

    • FAULTCODE, identificativo dell’errore, metatag obbligatorio.
    • FAULTSTRING, descrizione dell’errore, metatag obbligatorio.
    • FAULTACTOR, identificativo dell’actor che ha generato l’errore, metatag obbligatorio.
SOAP – Simple Object Access Protocol ultima modidfica: 2014-12-29T18:30:50+01:00 da admin
Posted in: SOA

By on 29 Dicembre 2014

Tagged: , , , , ,