首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 訊息編碼核心基礎:XmlDictionary、XmlDictionaryWriter/Reader 三大編碼方式全解析(上)

     編輯:關於.NET

訊息需編碼寫入傳輸層。WCF 提供 Binary、Text、MTOM 三種編碼,互操作與效能各有優勢。本文從核心基礎類別切入。

一、XmlDictionary:編解碼雙方共享的「詞彙表」

類比溝通需共享詞彙。XmlDictionary 為 XmlDictionaryString 集合,每項為 Key-Value(int/string)。編碼時以 Key 替換 Value,大幅壓縮體積。Add 方法自動遞增 Key。非集合介面,透過 TryLookup 查找。

二、XmlDictionaryWriter:編碼落地執行者

繼承 XmlWriter,三大具體實作:

  • XmlUTF8TextWriter:文本編碼(BasicHttpBinding/WsHttpBinding 預設)
  • XmlBinaryWriter:二進位編碼(高壓縮,僅限 WCF 內部)
  • XmlMtomWriter:MTOM 編碼(大型二進位優化,跨平台)

靜態工廠方法:CreateTextWriter/CreateBinaryWriter/CreateMtomWriter。內部類型,僅透過工廠建立。

1. XmlUTF8TextWriter(CreateTextWriter)

平台無關,最常用。支援 UTF8/Unicode。範例:簡單 XML 編碼後 93 位元組。

2. XmlBinaryWriter(CreateBinaryWriter)

二進位編碼,極大減少體積(範例 39 位元組,壓縮率 >50%)。WriteElementString 多載支援 XmlDictionaryString 參數。搭配 XmlDictionary 使用時,元素名稱/命名空間以 Key 替換,體積暴跌至 9 位元組。

3. XmlMtomWriter(CreateMtomWriter)

基於 XOP/MIME Multipart/Related 機制。二進位內容 Base64 編碼後優化分離為附件,SOAP 封套保留引用。參數 startInfo/boundary/startUri 控制 MIME 封裝結構。針對大型二進位優化,純文本反因結構描述而冗餘。

三、XmlDictionaryReader:解碼對應者

對應三種 Writer,提供 XmlUTF8TextReader/XmlBinaryReader/XmlMtomReader,透過 CreateTextReader/CreateBinaryReader/CreateMtomReader 建立。從二進位流還原 XML InfoSet。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved