訊息需編碼寫入傳輸層。WCF 提供 Binary、Text、MTOM 三種編碼,互操作與效能各有優勢。本文從核心基礎類別切入。
類比溝通需共享詞彙。XmlDictionary 為 XmlDictionaryString 集合,每項為 Key-Value(int/string)。編碼時以 Key 替換 Value,大幅壓縮體積。Add 方法自動遞增 Key。非集合介面,透過 TryLookup 查找。
繼承 XmlWriter,三大具體實作:
XmlUTF8TextWriter:文本編碼(BasicHttpBinding/WsHttpBinding 預設)XmlBinaryWriter:二進位編碼(高壓縮,僅限 WCF 內部)XmlMtomWriter:MTOM 編碼(大型二進位優化,跨平台)靜態工廠方法:CreateTextWriter/CreateBinaryWriter/CreateMtomWriter。內部類型,僅透過工廠建立。
平台無關,最常用。支援 UTF8/Unicode。範例:簡單 XML 編碼後 93 位元組。
二進位編碼,極大減少體積(範例 39 位元組,壓縮率 >50%)。WriteElementString 多載支援 XmlDictionaryString 參數。搭配 XmlDictionary 使用時,元素名稱/命名空間以 Key 替換,體積暴跌至 9 位元組。
基於 XOP/MIME Multipart/Related 機制。二進位內容 Base64 編碼後優化分離為附件,SOAP 封套保留引用。參數 startInfo/boundary/startUri 控制 MIME 封裝結構。針對大型二進位優化,純文本反因結構描述而冗餘。
對應三種 Writer,提供 XmlUTF8TextReader/XmlBinaryReader/XmlMtomReader,透過 CreateTextReader/CreateBinaryReader/CreateMtomReader 建立。從二進位流還原 XML InfoSet。