選擇訊息編碼器

本主題說明從 Windows Communication Foundation (WCF) 中所包含的訊息編碼器進行選擇的準則:二進位、文字和「訊息傳輸最佳化機制」(Message Transmission Optimization Mechanism,MTOM)。

在 WCF 中,您可以藉由一連串「繫結項目」(Binding Element) 所組成的「繫結」(Binding),指定如何跨網路在端點之間傳輸資料。訊息編碼器是由繫結堆疊中的訊息編碼繫結項目所表示。繫結包含選擇性通訊協定繫結項目 (例如安全性繫結項目或可靠的訊息繫結項目)、必要的訊息編碼繫結項目和必要的傳輸繫結項目。

訊息編碼繫結項目位在選擇性通訊協定繫結項目之下,在必要的傳輸繫結項目之上。在傳出端,訊息編碼器會序列化傳出的 Message,並會將它傳遞至傳輸。在傳入端,訊息編碼器會從傳輸接收 Message 的序列化形式,並會將它傳遞至更高的通訊協定層 (如果有的話),否則會傳遞至應用程式。

連接到已存在的用戶端或伺服器時,您可能沒有使用特定訊息編碼的選擇,因為您必須以另一端預期的方式,對訊息進行編碼。不過,如果要撰寫 WCF 服務,您可以透過多個端點,每個端點使用不同的訊息編碼,來公開服務。這會讓用戶端在對它們來說是最佳端點上,選擇最佳編碼方式來與服務交談,而且會提供用戶端彈性來選擇最佳編碼方式。使用多個端點,也會將不同訊息編碼的好處與其他繫結項目結合。

系統提供的編碼器

WCF 包含三個訊息編碼器,由下列三個類別所表示:

  • TextMessageEncodingBindingElement 即文字訊息編碼器,支援純 XML 編碼方式和 SOAP 編碼方式。文字訊息編碼器的純 XML 編碼模式稱為 "plain old XML" (POX),與文字為主的 SOAP 編碼方式有所區別。若要啟用 POX,請將 MessageVersion 屬性設定為 None。您可以使用文字訊息編碼器,與非 WCF 端點交互操作。
  • BinaryMessageEncodingBindingElement 即二進位訊息編碼器,會使用壓縮的二進位格式,且已針對 WCF 與 WCF 之間通訊最佳化,因此無法交互操作。這也是 WCF 提供的所有編碼器中最具效能的編碼器。
  • MTOMMessageEncodingBindingElement 即繫結項目,會指定以 MTOM 編碼訊息的字元編碼和訊息版本處理。MTOM 是在 WCF 訊息中傳輸二進位資料的有效技術。MTOM 編碼器會嘗試在效率和互通性之間保持平衡。MTOM 編碼方式會以文字格式傳輸大部分的 XML,但是在傳輸大型區塊的二進位資料時,會依照原狀來傳送 (不轉換成文字),好讓這些資料最佳化。就效率而言,在 WCF 所提供的編碼器中,MTOM 是介於文字 (最慢) 和二進位 (最快) 之間。

如何選擇訊息編碼器

下表說明選擇訊息編碼器時的通用因素。將對您應用程式最重要的因素設定優先權,然後選擇最適合這些因素的訊息編碼器。請務必考慮表格中所未列出的任何其他因素,以及應用程式可能需要的任何自訂訊息編碼器。

因素 描述 支援這個因素的編碼器

支援的字元集。

TextMessageEncodingBindingElementMtomMessageEncodingBindingElement 只支援 UTF8 及 UTF16 Unicode (「位元組由大到小」 (Big-Endian) 與「位元組由小到大」 (Little-Endian)) 編碼。如果不需要如 UTF7、ASCII 等的其他編碼,則必須使用自訂編碼器。如需範例自訂編碼器,請參閱 https://go.microsoft.com/fwlink/?LinkId=119857

文字

檢查

檢查是傳輸期間檢查訊息的能力。不論是否使用 SOAP,文字編碼都會讓許多應用程式檢查及分析訊息,而不需要使用特別工具。請注意,在訊息或傳輸層級上,傳輸安全性的使用會影響檢查訊息的能力。機密性會保護訊息不受檢查,而完整性則會保護訊息不受修改。

文字

可靠性

可靠性是編碼器抵抗傳輸錯誤的能力。此外,也可以在訊息、傳輸或應用程式層提供可靠性。所有標準的 WCF 編碼器都假設另一層會提供可靠性。編碼器不太能從傳輸錯誤復原。

簡單

簡單表示可輕鬆建立某個編碼規格的編碼器和解碼器。文字編碼對簡單而言特別有利,而且 POX 文字編碼還有不需要支援來處理 SOAP 的額外好處。

文字 (POX)

大小

編碼方式決定了內容所需的負荷量。編碼訊息的大小與服務作業的最大輸送量直接相關。二進位編碼通常比文字編碼更為精簡。當訊息太大時,請考慮在編碼期間一併壓縮訊息內容。不過,對於訊息傳送者和接收者,壓縮都會增加處理成本。

二進位

資料流

資料流可讓應用程式在整個訊息送達之前開始處理訊息。有效使用資料流,會要求訊息開頭便提供訊息的重要資料,因此接收的應用程式不需要等待訊息送達。而且,使用資料流處理傳輸的應用程式必須累加組織訊息中的資料,因此內容沒有轉接相依性。在許多情況下,您必須在資料流內容和擁有內容的最小傳輸大小之間妥協。

協力廠商工具支援

編碼方式的支援區域包含開發和診斷。協力廠商開發人員已經在處理 POX 格式編碼訊息的程式庫和工具組投入大量投資。

文字 (POX)

互通性

這個因素是指 WCF 編碼器與非 WCF 服務交互操作的能力。

文字

MTOM (部分)

請參閱

其他資源

Windows Communcation Foundation 繫結