MTOM-XOP per ottimizzare i messaggi SOAP
L'utilizzo di MTOM/XOP nasce dall'esigenza di ottimizzare un messaggio SOAP. Questo viene serializzato in un messaggio MIME Multipart/Related utilizzando l'elaborazione XOP.
I dati base64Binary vengono estratti dal messaggio SOAP e impacchettati come allegati binari separati all'interno del messaggio MIME, in modo simile agli allegati di posta elettronica. La dimensione dei dati base64Binary è notevolmente ridotta perché gli allegati sono codificati in formato binario. L'XML nel messaggio SOAP viene quindi convertito in formato XOP sostituendo i dati base64Binary con uno speciale elemento
<xop:Include>
che referenzia l'allegato MIME con l'utilizzo di una URI Il messaggio SOAP così modificato viene chiamato XOP Document e rappresenta la Root all'interno del messaggio. Viene definito quindi come XOP Package l'insieme del XOP Document e l'attachment binario. Nell'utilizzo dei messaggi SOAP, il XOP Package è il messaggio MIME nel formato MTOM Per vedere un esempio di utilizzo, scriviamo un messaggio SOAP che contiene un'immagine di tipo PNG e lo convertiamo in una versione MTOM/XOP
/p>
SOAP MESSAGE
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xmime="http://www.w3.org/2003/12/xop/mime">
<soap:Body>
<hotelReference>
<accountNumber>ABC-1234</accountNumber>
<accountCode>accident</accountCode>
<hotelName>Bonvecchiati</hotelName>
<hotelImage xmime:contentType="image/png" xsi:type="base64binary">4f3e..(encoded image)</hotelImage>
</hotelReference>
</soap:Body>
</soap:Envelope>
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xmime="http://www.w3.org/2003/12/xop/mime">
<soap:Body>
<hotelReference>
<accountNumber>ABC-1234</accountNumber>
<accountCode>accident</accountCode>
<hotelName>Bonvecchiati</hotelName>
<hotelImage xmime:contentType="image/png" xsi:type="base64binary">4f3e..(encoded image)</hotelImage>
</hotelReference>
</soap:Body>
</soap:Envelope>
MTOM/XOP SOAP MESSAGE
MIME-Version: 1.0
Content-Type: Multipart/Related; boundary=MIME_boundary;
type="application/soap+xml"; start="<reference1@testcontechlab.com>"
--MIME_boundary
Content-Type: application/soap+xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <reference1@testcontechlab.com>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xop='http://www.w3.org/2004/08/xop/include'
xmlns:xop-mime='http://www.w3.org/2005/05/xmlmime'>
<soap:Body>
<hotelReference>
<accountNumber>ABC-1234</accountNumber>
<accountCode>accident</accountCode>
<hotelName>Bonvecchiati</hotelName>
<hotelImage xop-mime:content-type='image/png'><xop:Include href="cid:image1@testcontechlab.com"/></hotelImage>
</hotelReference>
</soap:Body>
</soap:Envelope>
--MIME_boundary
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
Content-ID: <image1@testcontechlab.com>
...elemento immagine PNG in formato Binary...
--MIME_boundary--
Content-Type: Multipart/Related; boundary=MIME_boundary;
type="application/soap+xml"; start="<reference1@testcontechlab.com>"
--MIME_boundary
Content-Type: application/soap+xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <reference1@testcontechlab.com>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xop='http://www.w3.org/2004/08/xop/include'
xmlns:xop-mime='http://www.w3.org/2005/05/xmlmime'>
<soap:Body>
<hotelReference>
<accountNumber>ABC-1234</accountNumber>
<accountCode>accident</accountCode>
<hotelName>Bonvecchiati</hotelName>
<hotelImage xop-mime:content-type='image/png'><xop:Include href="cid:image1@testcontechlab.com"/></hotelImage>
</hotelReference>
</soap:Body>
</soap:Envelope>
--MIME_boundary
Content-Type: image/jpeg
Content-Transfer-Encoding: binary
Content-ID: <image1@testcontechlab.com>
...elemento immagine PNG in formato Binary...
--MIME_boundary--
Il parametro definito Start, specifica quale parte del messaggio rappresenta la Root del documento XOP.
Il Content-ID identifica le parti del messagio MIME.
L'elemento xop:Include referenzia l'immagine binaria in attachmet al messaggio.
Il Content-ID: