Condividi tramite


Codifica MTOM

L'esempio MTOM illustra l'uso della codifica dei messaggi MTOM (Message Transmission Optimization Mechanism) con un WSHttpBinding. MTOM è un meccanismo per trasmettere allegati binari di grandi dimensioni con messaggi SOAP come byte non elaborati, consentendo messaggi più piccoli.

Per impostazione predefinita, WSHttpBinding invia e riceve messaggi come XML di testo normale. Per abilitare l'invio e la ricezione di messaggi MTOM, impostare l'attributo messageEncoding sulla configurazione dell'associazione (come nel codice di esempio seguente) o direttamente sull'associazione usando la MessageEncoding proprietà . Il servizio o il client può ora inviare e ricevere messaggi MTOM.

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

Il codificatore MTOM può ottimizzare le matrici di byte e flussi. In questo esempio l'operazione usa un Stream parametro e pertanto può essere ottimizzata.

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

Il contratto scelto per questo esempio trasmette i dati binari al servizio e riceve il numero di byte caricati come valore restituito. Quando il servizio viene installato e il client viene eseguito, viene stampato il numero 1000, che indica che sono stati ricevuti tutti i 1000 byte. Il resto dell'output elenca dimensioni dei messaggi ottimizzate e non ottimizzate per vari payload.

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.

Lo scopo dell'uso di MTOM è ottimizzare la trasmissione di payload binari di grandi dimensioni. L'invio di un messaggio SOAP con MTOM comporta un notevole sovraccarico per i payload binari di piccole dimensioni, ma diventa un notevole risparmio quando aumentano di oltre poche migliaia di byte. Il motivo è che il codice XML di testo normale codifica i dati binari usando Base64, che richiede quattro caratteri per ogni tre byte e aumenta le dimensioni dei dati di un terzo. MTOM è in grado di trasmettere i dati binari come byte non elaborati, salvando il tempo di codifica/decodifica e ottenendo messaggi più piccoli. La soglia di poche migliaia di byte è ridotta rispetto ai documenti aziendali e alle fotografie digitali di oggi.

Per configurare, compilare ed eseguire l'esempio

  1. Installare ASP.NET 4.0 usando il comando seguente.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.

  3. Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.

  4. Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.