SOAP messages are transport agnostic. In other words, there is no need to place transport-specific information into a message. This simple feature is one of the key features that make SOAP such a powerful messaging structure. Once again, our postal service example can provide an illustration. If a postal message was sent with a dependency on the transport, it would be equivalent to telling your postal carrier where you want the message to be delivered and not including that information on the envelope of the message. If we follow this train of thought, the message is tightly bound to the postal carrier. This tight coupling is bad for several reasons:
The message can be delivered only to places the postal carrier can go.
No other postal worker can interact with the message (unless the previous postal carrier communicates it).
Batch sorting and delivering of messages is difficult.
Because there is no return address on the message, the sender cannot be notified if something goes wrong while the message is processed.
From a service-oriented perspective, this is a terrible scenario. A much better plan would be to include all relevant addressing information in the message itself, thereby preventing a strong tie to the transport layer. When messages include this information, a myriad of SOAP behaviors (including the aforementioned behaviors) are possible. For example, we all know that mail is picked up by a postal carrier, delivered to a sorting facility, and then sent on to other sorting facilities and postal carriers via planes, trains, boats, or trucks. In our everyday mail example, we see that the transport can change during the delivery of the message (carrier, sorting facility, plane, and so on), and this improves efficiency. None of that is possible if each message does not contain an address.