Messages are the fundamental unit of communication in service-oriented applications. For this reason, service-oriented applications are often called messaging applications. At some point, every SO application will send or receive a message. It is helpful to think of a service-oriented message as similar to a letter you receive in the mail. In the postal system, a letter is an abstract entity: it can contain almost any type of information, can exist in many different shapes and sizes, and can relate to almost anything. Likewise, a service-oriented message is an abstract entity: it can contain almost any data, can be encoded in many different ways, and can relate to virtually anything, even other messages. Some properties of a postal letter are widely accepted to be true. For example, a letter is always sent by someone, sent to someone, and might be delivered by someone (more on that “might be” in a moment). Likewise, a service-oriented message is sent by a computer, sent to a computer, and might be delivered by computer. To satisfy the theory wonks, I must say that in the purest sense, entities that interact with service-oriented messages do not have to be computers. Theoretically, they could be carrier pigeons, Labradors, or maybe even ligers. Regardless, the entities that interact with service-oriented messages are called messaging participants, and in this book, a messaging participant will be a process on a computer.