MTOM-CodierungMTOM Encoding

Dieses Beispiel veranschaulicht die Verwendung der MTOM-Nachrichtencodierung (Message Transmission Optimization Mechanism) mit einer WSHttpBinding.This sample demonstrates the use of the Message Transmission Optimization Mechanism (MTOM) message encoding with a WSHttpBinding. MTOM ist ein Mechanismus zum Übertragen großer Binäranhänge mit SOAP-Nachrichten als unformatierte Bytes, was kleinere Nachrichten ermöglicht.MTOM is a mechanism for transmitting large binary attachments with SOAP messages as raw bytes, allowing for smaller messages.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Binding\WS\MTOM

Standardmäßig sendet und empfängt "WSHttpBinding" Nachrichten als normales Text-XML.By default, the WSHttpBinding sends and received messages as normal text XML. Wenn Sie das Senden und Empfangen von MTOM-Nachrichten aktivieren möchten, legen Sie das messageEncoding-Attribut in der Bindungskonfiguration (wie im folgenden Beispielcode) oder direkt in der Bindung mithilfe der MessageEncoding-Eigenschaft fest.To enable sending and receiving MTOM messages, set the messageEncoding attribute on the binding's configuration (as in the following example code), or directly on the binding using the MessageEncoding property. Der Dienst oder Client kann nun MTOM-Nachrichten senden und empfangen.The service or client can now send and receive MTOM messages.

<wsHttpBinding>  
  <binding name="WSHttpBinding_IUpload" messageEncoding="Mtom" />  
</wsHttpBinding>  

Der MTOM-Encoder kann Arrays von Bytes und Streams optimieren.The MTOM encoder can optimize arrays of bytes and streams. In diesem Beispiel verwendet der Vorgang einen Stream-Parameter und kann deshalb optimiert werden.In this sample, the operation uses a Stream parameter and can therefore be optimized.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]  
  public interface IUpload  
  {  
      [OperationContract]  
      int Upload(Stream data);  
  }  

Der für dieses Beispiel gewählte Vertrag überträgt Binärdaten an den Dienst und empfängt die Anzahl der hochgeladenen Bytes als Rückgabewert.The contract chosen for this sample transmits binary data to the service and receives the number of bytes uploaded as the return value. Wenn der Dienst installiert ist und der Client ausgeführt wird, gibt er die Zahl 1000 aus. Damit wird angezeigt, dass alle 1000 Bytes empfangen wurden.When the service is installed and the client is run, it prints out the number 1000, which indicates that all 1000 bytes were received. Der Rest der Ausgabe führt optimierte und nicht optimierte Nachrichtengrößen für verschiedene Nutzlasten auf.The remainder of the output lists optimized and non-optimized message sizes for various payloads.

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.  

Der Zweck der Verwendung von MTOM besteht in der Optimierung der Übertragung großer binärer Nutzlasten.The purpose for using MTOM is to optimize the transmission of large binary payloads. Das Senden einer SOAP-Nachricht mit MTOM bedeutet zwar einen deutlichen Mehraufwand bei kleinen binären Nutzlasten, ist jedoch bei Datenmengen von mehr als einigen Tausend Bytes eine große Ersparnis.Sending a SOAP message using MTOM has a noticeable overhead for small binary payloads, but becomes a great savings when they grow over a few thousand bytes. Der Grund dafür liegt darin, dass normales Text-XML Binärdaten mit Base64 codiert. Dabei sind vier Zeichen für drei Bytes erforderlich, wodurch die Datenmenge um ein Drittel vergrößert wird.The reason for this is that normal text XML encodes binary data using Base64, which requires four characters for every three bytes, and increases the size of the data by one third. MTOM kann Binärdaten als unformatierte Bytes übertragen, spart dadurch die Zeit zum Codieren/Decodieren und erzeugt kleinere Nachrichten.MTOM is able to transmit binary data as raw bytes, saving the encoding/decoding time and resulting is smaller messages. Der Schwellenwert von einigen Tausend Bytes ist verglichen mit heutigen Geschäftsdokumenten und Digitalfotos klein.The threshold of a few thousand bytes is small when compared to today's business documents and digital photographs.

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Installieren Sie ASP.NETASP.NET 4.0 mithilfe des folgenden Befehls.Install ASP.NETASP.NET 4.0 using the following command.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable  
    
  2. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  3. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  4. Um das Beispiel in einer einzelnen oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Siehe auchSee Also