Compartilhar via


Codificação de MTOM

A amostra de MTOM demonstra o uso da codificação de mensagem MTOM (Message Transmission Optimization Mechanism) com um WSHttpBinding. O MTOM é um mecanismo para transmitir anexos binários grandes com mensagens SOAP como bytes brutos, permitindo mensagens menores.

Por padrão, o WSHttpBinding envia e recebe mensagens como XML de texto normal. Para habilitar o envio e o recebimento de mensagens MTOM, defina o atributo messageEncoding na configuração da associação (como no código de exemplo a seguir) ou diretamente na associação usando a propriedade MessageEncoding. O serviço ou o cliente agora pode enviar e receber mensagens MTOM.

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

O codificador MTOM pode otimizar matrizes de bytes e fluxos. Neste exemplo, a operação usa um parâmetro Stream e, portanto, pode ser otimizada.

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

O contrato escolhido para este exemplo transmite dados binários para o serviço e recebe o número de bytes carregados como o valor retornado. Quando o serviço é instalado e o cliente é executado, ele imprime o número 1000, o que indica que todos os 1000 bytes foram recebidos. O restante da saída lista tamanhos de mensagem otimizados e não otimizados para vários conteúdos.

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.

A finalidade para usar o MTOM é otimizar a transmissão de cargas binárias grandes. O envio de uma mensagem SOAP usando MTOM tem uma sobrecarga perceptível para pequenas cargas binárias, mas se torna uma grande economia quando elas crescem mais de alguns milhares de bytes. O motivo disso é que o texto XML normal codifica dados binários usando Base64, que requer quatro caracteres para cada três bytes e aumenta o tamanho dos dados em um terço. O MTOM é capaz de transmitir dados binários como bytes brutos, salvando o tempo de codificação/decodificação e resultando em mensagens menores. O limite de alguns milhares de bytes é pequeno quando comparado com os documentos de negócios e fotografias digitais atuais.

Para configurar, compilar, e executar o exemplo

  1. Instale o ASP.NET 4.0 usando o seguinte comando.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.

  3. Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.

  4. Para executar a amostra em uma configuração de computador único ou entre computadores, siga as instruções contidas em Como executar as amostras do Windows Communication Foundation.