MTOM 範例示範如何使用 WSHttpBinding 進行訊息傳輸優化機制(MTOM)訊息編碼。 MTOM 是一種機制,用來以SOAP訊息作為原始位元組傳輸大型二進位附件,以允許較小的訊息。
根據預設,WSHttpBinding 會以一般文字 XML 的形式傳送和接收訊息。 若要啟用傳送和接收 MTOM 訊息,請在系結的組態上設定 messageEncoding
屬性(如下列範例程式代碼),或使用 屬性直接在系結 MessageEncoding
上設定 屬性。 服務或客戶端現在可以傳送和接收 MTOM 訊息。
<wsHttpBinding>
<binding name="WSHttpBinding_IUpload" messageEncoding="Mtom" />
</wsHttpBinding>
MTOM 編碼器可以優化位元組和數據流的陣列。 在此範例中,作業會使用 Stream
參數,因此可以優化。
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface IUpload
{
[OperationContract]
int Upload(Stream data);
}
為此範例選擇的合約是將二進位數據傳送至服務,並接收上傳的位元組數作為傳回值。 安裝服務並執行用戶端時,它會列印出數位 1000,表示已接收所有 1000 個字節。 輸出的其餘部分會列出各種資料負載的優化和非優化訊息大小。
Output:
1000
Text encoding with a 100 byte payload: 433
MTOM encoding with a 100 byte payload: 912
Text encoding with a 1000 byte payload: 1633
MTOM encoding with a 1000 byte payload: 2080
Text encoding with a 10000 byte payload: 13633
MTOM encoding with a 10000 byte payload: 11080
Text encoding with a 100000 byte payload: 133633
MTOM encoding with a 100000 byte payload: 101080
Text encoding with a 1000000 byte payload: 1333633
MTOM encoding with a 1000000 byte payload: 1001080
Press <ENTER> to terminate client.
使用 MTOM 的目的是優化大型二進位承載的傳輸。 使用 MTOM 傳送 SOAP 訊息對於小型二進位承載有明顯的額外負荷,但是當它們成長超過幾千個字節時,就會節省大量成本。 這是因為一般文字 XML 會使用Base64編碼二進位數據,這需要每三個字節四個字元,並將數據的大小增加三分之一。 MTOM 能夠以原始位元組的形式傳輸二進位數據,並儲存編碼/譯碼時間,併產生較小的訊息。 與現今的商業文件和數位照片相比,數千位元組的臨界值很小。
要設定、建置和執行範例,請執行以下步驟:
請使用下列命令安裝 ASP.NET 4.0。
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。
若要建置解決方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例 中中的指示。
若要在單一或跨計算機組態中執行範例,請遵循執行 Windows Communication Foundation 範例 中的指示。