Codificação MTOM
O exemplo MTOM demonstra o uso da codificação de mensagem MTOM (Message Transmission Optimization Mechanism) com um WSHttpBinding. 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 messageEncoding
atributo na configuração da associação (como no código de exemplo a seguir) ou diretamente na associação usando a MessageEncoding
propriedade. O serviço ou 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 Stream
parâmetro 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 de retorno. Quando o serviço é instalado e o cliente é executado, ele imprime o número 1000, 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árias cargas úteis.
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.
O objetivo do uso do MTOM é otimizar a transmissão de grandes cargas úteis binárias. Enviar uma mensagem SOAP usando MTOM tem uma sobrecarga percetível para pequenas cargas binárias, mas se torna uma grande economia quando elas crescem mais de alguns milhares de bytes. A razão para isso é que o XML de texto 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. MTOM é capaz de transmitir dados binários como bytes brutos, economizando 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 comerciais 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
Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.
Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.
Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.