web服務與二進制數據傳輸介紹

圖片、影音等相似的這些二進制數據如何做爲參數傳入,或者做爲返回值從web服務操做中返回?只有進行類型轉換了。基於SOAP的web服務用到的數據類型並不僅侷限於純文本,可是這些web服務對於二進制數據的使用引起了重大的效率問題java

在基於SOAP的web服務中,能夠利用以下兩種通用的作法來處理任意的二進制數據:web

  • 二進制數據能夠經過某種模式編碼,好比使用Base64編碼規範,而後做爲SOAP消息體中的單元進行傳送。好比,一個能夠向請求者返回圖片格式的服務操做能夠簡單地返回一個java.awt.Image對象,它是java中對二進制圖像數據進行包裝的類。那麼圖像所包括的byte數據能夠進行編碼後做爲SOAP消息體進行傳輸。不利的一面就是Base64編碼或相似的編碼格式將會致使發送單元相比編碼前的二進制數據而言,在內容多少上至少膨脹三分之一。簡而言之,像Base64這樣的byte編碼將致使數據量進一步膨脹。ide

  • 二進制數據能夠做爲SOAP消息的一個或多個附件的方式發送。回顧前面,SOAP消息由一個SOAP part組成,在其中包括一個可選的消息報頭和可能爲空的消息報體以及可選的SOAP附件。附件的數據內容能夠是任何定義的MIME類型,包括:audio/x-wav、video/mpeg及image/jpeg等這些多媒體類型。JAX-B提供了MIME類型和Java類型間必需的映射:其中MIME類型image/*map對應java Image類型,剩下其餘多媒體類型對應DataHandler。編碼

在web服務中往返於發送者和接收者之間傳輸的二進制數據,一般採用附件的方式傳輸而不是對這些數據編碼後傳輸,由於這種選擇避免了數據量的膨脹。不利的一面是數據的接收者必須處理這些未通過處理的byte數據,好比將這些byte數據再轉換爲圖像或聲音類型。spa

使用SOAP附件傳輸二進制數據的3種選擇對象

SOAP附件方式存在3種基本的選擇:SwA(SOAP with Attachments),SOAP規範中所指定的附件方式;DIME(Direct Internet Message Encapsulation),輕量級的可是有些過期的編碼格式;MTOM(Message Transmission Optimization Mechanism),基於XOP(XML-Binary OPtimized Packaging)。JWS提供了DIME方式的擴展,主要目的就是針對微軟客戶端的互用性提供支持。一直到Microsoft Office 2003發佈爲止,由微軟宏語言(VBA)編寫的web服務客戶端只可以處理DIME編碼的附件。SwA方式也有嚴重缺點,SwA很難處理Document綁定樣式的服務,而這種綁定樣式目前已經成爲一種標準。何況,像微軟的.Net平臺也不支持SwA方式。MTOM經過了W3C認證,享有普遍的支持;所以,在基於SOAP的web服務二進制數據傳輸中,MTOM表明了目前高效、流行的數據交互方式。
圖片

相關文章
相關標籤/搜索