MTOM is usually used with the XOP (XML-binary Optimized Packaging).
MTOM only optimizes element content that is in the canonical lexical representation of the xs:base64Binary data type. Since there is no standard way to indicate whether data is in the canonical lexical representation, the mechanism for applying MTOM is implementation-dependent.
The use of MTOM is a hop-by-hop contract between one SOAP node and the next. There is no guarantee that the optimization will be preserved if there are multiple SOAP nodes involved.
Although most users treat MTOM as a single mechanism, the MTOM specification defines it as three related features:
- Firstly, an "Abstract SOAP Transmission Optimization Feature" for sending and receiving SOAP messages that contain binary data. The binary data is a part of the single XML Infoset model, but this feature introduces the concept of sending the binary data separately (i.e. not in the serialized XML infoset). This abstract feature does not define how the serialized XML infoset looks without the binary data, nor how the binary data is actually represented.
- Secondly, an "Optimized MIME Multipart/Related Serialization of SOAP Messages" is defined. This defines that the serialized XML infoset will include XML-binary Optimized Packaging (XOP) in place of the binary data, and the binary data (along with the serialized XML infoset with XOP placeholders) will be represented together in a MIME container. Although this defines a SOAP message, it does not define the transport protocol over which that MIME and XOP SOAP message is sent.
- Thirdly, a "HTTP SOAP Transmission Optimization Feature" defines how the above MIME and XOP SOAP message is sent over HTTP.
Sometimes the term "MTOM" is used as a shorthand to mean "MTOM with XOP". XOP is used as the referencing mechanism in the serialised XML infoset. In theory, the abstract MTOM model could be used with a different referencing mechanism or different container format; also, MTOM could be used over a different transport protocol instead of HTTP. In practice, MTOM is usually used with XOP, MIME and HTTP.