我有限的知識WCF以及通過WCF發送二進制數據,所以這個問題可能有些殘留的。通過WCF發送二進制數據:二進制VS MTOM編碼
我想知道有BinaryMessageEncodingBindingElement
和MtomMessageEncodingBindingElement
發送的數據之間的差異。在閱讀本頁後,我仍不清楚何時使用哪種方法,從MSDN登錄Large Data and Streaming。
而且,一個小問題:是帶有附件的郵件和MTOM消息是一回事嗎?
我有限的知識WCF以及通過WCF發送二進制數據,所以這個問題可能有些殘留的。通過WCF發送二進制數據:二進制VS MTOM編碼
我想知道有BinaryMessageEncodingBindingElement
和MtomMessageEncodingBindingElement
發送的數據之間的差異。在閱讀本頁後,我仍不清楚何時使用哪種方法,從MSDN登錄Large Data and Streaming。
而且,一個小問題:是帶有附件的郵件和MTOM消息是一回事嗎?
MTOM是使用多部分MIME編碼消息來發送大且過於昂貴爲base64編碼作爲純二進制消息的部分的標準。 SOAP消息本身作爲消息的初始部分發送,幷包含對二進制部分的引用,然後像WCF這樣的Web服務軟件堆棧可以將它們一起拉回,以創建消息的單個表示形式。
二進制編碼是完全專有的WCF,真的不只是有大的消息做。它提供了一個XML Infoset的二進制表示,它比整個網絡更加緊湊,並且比基於文本的格式更快地進行解析。如果您碰巧正在發送大量的二進制數據塊,那麼它恰好適合正在發送的其他字節。
流可以做到與任何消息格式使用。這更多的是關於何時將數據寫入整個網絡,而將數據在呈現給網絡傳輸之前完全緩存在存儲器中。較小的消息在發送更大的消息(尤其是包含大量二進制塊或流的消息)時需要進行緩衝,因此需要進行流式處理或耗盡內存資源。
感謝您的詳細解答!那麼,MTOM只是一個帶有附件的SOAP消息,類似於SMTP郵件中的附件? –
這是正確的。 –
@Drew Marsh,但他怎麼能包含一個二進制數據(withougt解碼爲基礎64),然後通過HTTP發送? –
它主要是關於互操作性。你想有可互操作的服務嗎?使用Mtom。你想僅從WCF客戶端調用服務嗎?使用二進制消息編碼。 –