Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Installare ASP.NET 4.0 usando il comando seguente.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Assicurati di aver eseguito la procedura di installazione di One-Time per gli esempi di Windows Communication Foundation.
Per compilare l'edizione C# o Visual Basic .NET della soluzione, seguire le istruzioni in Compilazione degli esempi di Windows Communication Foundation.
Per eseguire l'esempio in una configurazione con computer singolo o incrociato, seguire le istruzioni riportate in Esecuzione degli esempi di Windows Communication Foundation.