Dela via


MTOM-kodning

MTOM-exemplet visar användningen av MTOM-meddelandekodning (Message Transmission Optimization Mechanism) med WSHttpBinding. MTOM är en mekanism för att överföra stora binära bifogade filer med SOAP-meddelanden som råa byte, vilket möjliggör mindre meddelanden.

Som standard skickar och tar WSHttpBinding emot meddelanden som vanlig text-XML. Om du vill aktivera sändning och mottagning av MTOM-meddelanden anger du messageEncoding attributet för bindningens konfiguration (som i följande exempelkod) eller direkt på bindningen med hjälp av MessageEncoding egenskapen . Tjänsten eller klienten kan nu skicka och ta emot MTOM-meddelanden.

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

MTOM-kodaren kan optimera matriser med byte och strömmar. I det här exemplet använder åtgärden en Stream parameter och kan därför optimeras.

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

Kontraktet som valts för det här exemplet överför binära data till tjänsten och tar emot antalet byte som laddats upp som returvärde. När tjänsten installeras och klienten körs skrivs numret 1000 ut, vilket anger att alla 1 000 byte togs emot. Resten av utdata visar optimerade och icke-optimerade meddelandestorlekar för olika nyttolaster.

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.

Syftet med att använda MTOM är att optimera överföringen av stora binära nyttolaster. Att skicka ett SOAP-meddelande med MTOM har en märkbar omkostnad för små binära nyttolaster, men blir en stor besparing när de växer över några tusen byte. Anledningen till detta är att vanlig text-XML kodar binära data med base64, vilket kräver fyra tecken för var tredje byte och ökar datastorleken med en tredjedel. MTOM kan överföra binära data som rådata, vilket sparar kodnings-/avkodningstiden och resultatet är mindre meddelanden. Tröskelvärdet på några tusen byte är litet jämfört med dagens affärsdokument och digitala fotografier.

Så här konfigurerar du, skapar och kör exemplet

  1. Installera ASP.NET 4.0 med hjälp av följande kommando.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Kontrollera att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.

  3. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  4. Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.