Message passing differs from conventional programming where a process, subroutine, or function is directly invoked by name.
Message passing is a technique for invoking behavior (i.e., running a program) on a computer.
In contrast to the traditional technique of calling a program by name, message passing uses an object model to distinguish the general function from the specific implementations.
The invoking program sends a message and relies on the object to select and execute the appropriate code.
In traditional computer programming, this would result in long IF-THEN statements testing what sort of object the shape was and calling the appropriate code.
[1] Distributed message passing provides developers with a layer of the architecture that provides common services to build systems made up of sub-systems that run on disparate computers in different locations and at different times.
[3] Asynchronous messaging requires additional capabilities for storing and retransmitting data for systems that may not run concurrently, and are generally handled by an intermediary level of software (often called middleware); a common type being Message-oriented middleware (MOM).
For example, the α-Synchronizer works by ensuring that the sender always waits for an acknowledgement message from the receiver.
With this type of message passing it is not a requirement that sender nor receiver use object-oriented programming.
Procedural language systems can be wrapped and treated as large grained objects capable of sending and receiving messages.
[4] Examples of systems that support distributed objects are: Emerald, ONC RPC, CORBA, Java RMI, DCOM, SOAP, .NET Remoting, CTOS, QNX Neutrino RTOS, OpenBinder and D-Bus.
Traditional procedure calls differ from message-passing in terms of memory usage, transfer time and locality.
Asynchronous message-passing, by contrast, can result in a response arriving a significant time after the request message was sent.
This means its state can change for reasons unrelated to the behavior of a single sender or client process.