Pergunta

MTOM é o Mecanismo de W3C mensagem Transmission Optimization, um método de envio de forma eficiente os dados binários de e para serviços web.

Como é que funciona em geral?

Foi útil?

Solução

Se você colocar Wireshark (ou habilitado System.Net Logging ) sobre a não MTOM habilitado serviço, você deve ver as solicitações SOAP com os dados binários codificados como BASE64. Enviando-o como BASE64 aumenta o tamanho dos dados binários, mas (presumo) torna mais interoperável.

Com MTOM, as mensagens SOAP são enviadas como mensagens MIME com a codificação Base64 sendo substituído com um espaço reservado. Os dados binários é, então, colocado entre delimitadores (o que acontece para cada pedaço de dados binário), e, em seguida, colocado no final da solicitação SOAP. Os dados binários é então enviada codificada. IIRC, MTOM também determina se de enviá-lo como uma mensagem MIME irá aumentar o tamanho da chamada SOAP e se não fornece uma poupança, que vai enviá-lo como uma mensagem SOAP normal.

Este fornece um exemplo do que a mensagem enviada através dos olhares de arame semelhante.

Outras dicas

Tudo começa com o fato de que o SOAP é XML . E quando você enviar qualquer coisa diferente de texto, por exemplo, uma imagem -. Tem que ser convertido em um tipo de dados que um processador XML pode entender

Sem MTOM, sua imagem será convertido para base64Binary e colocado bem no meio do seu envelope SOAP. Este processo de conversão faz com que a gordura de dados.

A muito looooooooooooooooooooooong corda base64Binary

Aqui está um exemplo simples:

enter descrição da imagem aqui

Com MTOM, a imagem será transmitida fora o envelope como um anexo MIME - em suma, ele é enviado de acordo com seu tipo de dados original: um jpg, png, ou gif. Claro que ainda é transmitida como dados binários, mas desta vez, não há nenhuma conversão XML-relacionadas, evitando a sobrecarga computacional. XOP entra em cena, pois é a única que dá a localização da imagem exteriorizada.

<soap:Envelope>
    <soap:Body>
        <tns:data>
            <xop:include href="SomeUniqueID-ThatLeadsToTheImage"/>
        </tns:data>
    </soap:Body>
</soap:Envelope>

Content-id:
"SomeUniqueID" Content-Type: image / png

dados de imagem binários aqui

Existem alguns fatores que outras respostas não mencionam. Pode-se pensar por que MTOM não é usado como padrão desde a sua "mais rápido" do que a codificação de mensagens de texto (Base64). É porque MTOM não é mais rápido sempre. MTOM só deve ser usado em grandes transferências de mensagens porque ele vem com uma sobrecarga. Para o tamanho pequeno de mensagens, o desempenho do MTOM vai ser pior do que a codificação de mensagens de texto (Base64).

Se MTOM é usado para mensagens grandes, é mais rápido do que Base64 uma vez que utiliza binário simples para transferência de dados. Para entender isso, deve-se entender como Base64 funciona.

usos Base64 6 bits (log2 (64)) para representar 1 caracter o que significa que as utilizações base64 4 caracteres para representar 24 bits ( 3 bytes ). Então, se o tamanho da mensagem é n bytes , base64 usará 4 * (n / 3) bytes para representar seus dados, o que significa que será mais lento por 1 / 3 que MTOM.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top