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
Instale o ASP.NET 4.0 usando o seguinte comando.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Verifique se você executou o Procedimento de instalação única para os exemplos do Windows Communication Foundation.
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.
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.