Delen via


MTOM-codering

Het MTOM-voorbeeld demonstreert het gebruik van de berichtcodering van het Message Transmission Optimization Mechanism (MTOM) met een WSHttpBinding. MTOM is een mechanisme voor het verzenden van grote binaire bijlagen met SOAP-berichten als onbewerkte bytes, waardoor kleinere berichten mogelijk zijn.

De WSHttpBinding verzendt en ontvangen berichten standaard als normale tekst-XML. Als u het verzenden en ontvangen van MTOM-berichten wilt inschakelen, stelt u het messageEncoding kenmerk in voor de configuratie van de binding (zoals in de volgende voorbeeldcode) of rechtstreeks op de binding met behulp van de MessageEncoding eigenschap. De service of client kan nu MTOM-berichten verzenden en ontvangen.

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

De MTOM-encoder kan matrices van bytes en streams optimaliseren. In dit voorbeeld gebruikt de bewerking een Stream parameter en kan daarom worden geoptimaliseerd.

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

Het contract dat voor dit voorbeeld is gekozen, verzendt binaire gegevens naar de service en ontvangt het aantal bytes dat is geüpload als de retourwaarde. Wanneer de service is geïnstalleerd en de client wordt uitgevoerd, wordt het getal 1000 afgedrukt, wat aangeeft dat alle 1000 bytes zijn ontvangen. De rest van de uitvoerlijsten is geoptimaliseerd en niet-geoptimaliseerd voor berichtgrootten voor verschillende nettoladingen.

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.

Het doel van het gebruik van MTOM is het optimaliseren van de overdracht van grote binaire nettoladingen. Het verzenden van een SOAP-bericht met MTOM heeft een merkbare overhead voor kleine binaire nettoladingen, maar wordt een grote besparing wanneer ze meer dan een paar duizend bytes toenemen. De reden hiervoor is dat normale tekst-XML binaire gegevens codeert met Base64, waarvoor vier tekens voor elke drie bytes zijn vereist en de grootte van de gegevens met een derde wordt verhoogd. MTOM kan binaire gegevens verzenden als onbewerkte bytes, waardoor de coderings-/decoderingstijd wordt opgeslagen en het resultaat kleinere berichten zijn. De drempelwaarde van een paar duizend bytes is klein in vergelijking met de zakelijke documenten en digitale foto's van vandaag.

Het voorbeeld instellen, compileren en uitvoeren

  1. Installeer ASP.NET 4.0 met de volgende opdracht.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Zorg ervoor dat u de eenmalige installatieprocedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.

  3. Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in het bouwen van de Windows Communication Foundation-voorbeelden.

  4. Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Het uitvoeren van de Windows Communication Foundation-voorbeelden.