it-swarm.com.de

Wie funktioniert MTOM?

MTOM ist der W3C Message Transmission Optimization Mechanism (Optimierungsmechanismus für die Nachrichtenübertragung), eine Methode zum effizienten Senden von Binärdaten zu und von Webdiensten.

Wie funktioniert das überhaupt?

64
Brian R. Bondy

Wenn Sie Wireshark (oder enabled System.Net Logging ) für den nicht MTOM-fähigen Dienst festlegen, sollten die SOAP -Anforderungen mit den Binärdaten angezeigt werden codiert als BASE64. Das Senden als BASE64 vergrößert die Größe der Binärdaten, macht sie jedoch (wie ich annehme) interoperabler.

Bei MTOM werden die Nachrichten SOAP als MIME-Nachrichten gesendet, wobei die BASE64-Codierung durch einen Platzhalter ersetzt wird. Die Binärdaten werden dann zwischen Trennzeichen (was für jedes Stück Binärdaten vorkommt) und dann am Ende der SOAP -Anforderung platziert. Die Binärdaten werden dann unverschlüsselt gesendet. IIRC, MTOM bestimmt auch, ob das Senden als MIME-Nachricht die Größe des SOAP -Aufrufs erhöht. Wenn keine Speicherung bereitgestellt wird, wird die Nachricht als normale SOAP -Nachricht gesendet .

This gibt ein Beispiel dafür, wie die über die Leitung gesendete Nachricht aussieht.

48

Alles beginnt mit der Tatsache, dass SOAP ist XML . Und wenn Sie etwas anderes als Text senden, zum Beispiel ein Bild - Es muss in einen Datentyp konvertiert werden, den ein XML-Prozessor verstehen kann.

Ohne MTOM wird Ihr Bild in base64Binary konvertiert und in die Mitte Ihres Umschlags gelegt SOAP. Dieser Konvertierungsprozess macht die Daten fett.

<tns: data> Ein sehr lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter lauter binärer string </ tns: data>

Hier ist eine einfache Illustration:

enter image description here

Mit MTOM wird das Bild übertragen außerhalb der Umschlag als MIME-Anhang - Kurz gesagt, es wird gemäß seinem ursprünglichen Datentyp gesendet: jpg, png oder gif. Natürlich wird es immer noch als Binärdaten übertragen, aber dieses Mal gibt es keine XML-bezogene Konvertierung, wodurch der Rechenaufwand vermieden wird. XOP kommt ins Bild, da es die Position des ausgelagerten Bildes angibt.

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

Inhalts-ID: "SomeUniqueID"
Inhaltstyp: image/png

Bildbinärdaten hier

147
Jops

Es gibt einige Faktoren, die andere Antworten nicht erwähnen. Man könnte meinen, warum MTOM nicht als Standard verwendet wird, da es "schneller" ist als die Textnachrichten-Codierung (Base64). Das liegt daran, dass MTOM nicht immer schneller ist. MTOM sollte nur für große Nachrichtenübertragungen verwendet werden, da es mit einem Overhead verbunden ist. Bei kleinen Nachrichten ist die Leistung von MTOM schlechter als die von Textnachrichten (Base64).

Wenn MTOM für große Nachrichten verwendet wird, ist es schneller als Base64, da Raw Binary für die Datenübertragung verwendet wird. Um das zu verstehen, sollte man verstehen, wie Base64 funktioniert.

Base64 verwendet 6 Bits (log2 (64)) zur Darstellung von 1 Zeichen, was bedeutet, dass base64 4 Zeichen zur Darstellung verwendet 24 Bits ( 3 Bytes). Wenn die Nachrichtengröße n Bytes ist, verwendet base64 4 * (n/3) Bytes, um Ihre Daten darzustellen, was bedeutet, dass es um 1/3 langsamer als MTOM.

8
sotn