Partager via


MTOM Encoding

Cet exemple montre l'utilisation codage de message MTOM (Message Transmission Optimization Mechanism) à l'aide de WSHttpBinding. MTOM est un mécanisme permettant de transmettre des pièces jointes binaires de grande taille avec des messages SOAP sous forme d'octets bruts, et d'obtenir ainsi des messages plus petits.

Par défaut, WSHttpBinding envoie et reçoit des messages sous forme de texte XML normal. Pour permettre l'envoi et la réception de messages MTOM, définissez l'attribut messageEncoding sur la configuration de la liaison (tel qu'indiqué dans l'exemple de code suivant), ou directement sur la liaison à l'aide de la propriété MessageEncoding. Le service ou le client peut maintenant envoyer et recevoir des messages MTOM.

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

Le codeur MTOM permet d'optimiser des tableaux d'octets et des flux. Dans cet exemple, l'opération utilise un paramètre Stream et peut donc être optimisée.

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

Le contrat choisi pour cet exemple transmet les données binaires au service et reçoit le nombre d'octets téléchargé comme valeur de retour. Lorsque le service est installé et que le client est exécuté, il imprime le nombre 1 000, qui indique que tous l'ensemble des 1 000 octets ont été reçus. Le reste de la sortie répertorie les tailles de message optimisées et non optimisées des diverses charges utiles.

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.

Le but de l'utilisation de MTOM est d'optimiser la transmission de charges utiles binaires de grande taille. L'envoi d'un message SOAP à l'aide de MTOM entraîne une surcharge significative pour les charges utiles binaires de petite taille, mais s'avère très avantageux lorsqu'elles passent à quelques milliers d'octets. La raison à cela est que le texte XML normal code des données binaires à l'aide de Base64, qui requiert quatre caractères tous les trois octets et augmente la taille des données d'un tiers. MTOM peut transmettre des données binaires sous forme d'octets bruts, ce qui permet de gagner du temps lors du codage/décodage et d'obtenir des messages plus petits. Le seuil de quelques milliers d'octets est petit comparé aux photographies numériques et documents professionnels actuels.

Pour configurer, générer et exécuter l'exemple

  1. Assurez-vous d'avoir effectué la procédure indiquée dans la section Procédure d'installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l'édition C# ou Visual Basic .NET de la solution, suivez les instructions indiquées dans Génération des exemples Windows Communication Foundation.

  3. Pour exécuter l'exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions indiquées dans Exécution des exemples Windows Communication Foundation.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.