WCF 提供三種編碼器,選擇取決於互操作需求、資料類型與效能考量。本文深度剖析三者機制與適用場景。
XML 1.0 定義語法;XML Infoset 定義資訊項目關係,不綁定具體語法,允許同一邏輯訊息採用不同編碼(文字、二進位、MTOM)而不修改程式。SOAP 1.2 建構於 Infoset 之上,WCF 同時支援 SOAP 1.1/1.2。
輸出 UTF-8 XML,所有懂 Unicode 系統皆可處理。二進位資料以 xs:base64Binary 嵌入(體積增 33%)。
適用:非 WCF 系統整合、純文字訊息、小型二進位資料。
序列化 Infoset 為緊湊二進位格式,僅限 WCF-to-WCF。訊息體積最小、序列化最快。未來可能有標準二進位編碼取代。
依 MTOM/XOP/MIME 標準,將大型二進位資料以原始位元組流置於 MIME 多部份訊息獨立區塊,XML 部份以 <xop:Include href="cid:..."/> 參照。
關鍵創新:同時保留內聯 base64 複本供 XML 數位簽名/加密使用,驗證完成再序列化為多部份格式傳輸。WCF 執行階段自動依二進位大小決定內聯或外部化。
| 訊息類型 / 互操作對象 | Binary | Text | MTOM |
|---|---|---|---|
| 純文字,僅 WCF | 1 | 2 | 3 |
| 純文字,現代非 WCF | N/A | 1 | 2 |
| 純文字,舊版非 WCF | N/A | 1 | N/A |
| 大型二進位,僅 WCF | 1 | 3 | 2 |
| 大型二進位,現代非 WCF | N/A | 2 | 1 |
| 大型二進位,舊版非 WCF | N/A | 1 | N/A |
| 小型二進位,僅 WCF | 1 | 2 | 3 |
| 小型二進位,現代非 WCF | N/A | 1 | 2 |
| 小型二進位,舊版非 WCF | N/A | 1 | N/A |
1=最佳、2=次佳、3=可用、N/A=不適用。
關鍵結論:WCF 允許單一服務同時暴露多端點支援不同編碼,兼顧 WCF 內部高效通訊與異構平台互操作。