通常有兩種方式處理二進制附件,一種是將二進制流經(jīng)過Base64編碼后嵌入到XML文檔中,一種是在XML文檔中引用該數(shù)據(jù),一個較為常見的例子是XHMTL文件中使用img標記引用圖片。前一種方式會通常會增加XML文檔的尺寸。
SOAP with Attachments 規(guī)范規(guī)定二進制數(shù)據(jù)可以作為多部分 MIME 文檔的的一部分發(fā)送,由 XML 數(shù)據(jù)組成第一部分,而二進制數(shù)據(jù)作為附加部分添加到其中。但是這種方式的問題在于,盡管您的程序可能知道數(shù)據(jù)存在,但文檔并不知道這一點。同時,還不允許對文檔進行選擇性優(yōu)化或?qū)ΠM制數(shù)據(jù)的現(xiàn)有文檔進行回溯處理。
最近W3C制定了XOP(XML-binary Optimized Packages,XOP)協(xié)議來解決二進制問題,XOP 提供一個機制,可選擇性地提取要優(yōu)化的信息,將其添加到多部分 MIME 消息中(其中也包括您的 SOAP 消息)并顯式地對其進行引用。
使用 XOP 的過程稱為 MTOM(SOAP 消息傳輸優(yōu)化機制——Message Transmission Optimization Mechanism)。