共用方式為


MTOM 編碼

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 能夠以原始位元組的形式傳輸二進位數據,並儲存編碼/譯碼時間,併產生較小的訊息。 與現今的商業文件和數位照片相比,數千位元組的臨界值很小。

要設定、建置和執行範例,請執行以下步驟:

  1. 請使用下列命令安裝 ASP.NET 4.0。

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. 請確定您已針對 Windows Communication Foundation 範例 執行One-Time 安裝程式。

  3. 若要建置解決方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例 中的指示。

  4. 若要在單一或跨計算機組態中執行範例,請遵循執行 Windows Communication Foundation 範例 中的指示。