Message Passing API (MPAPI) is a framework that enables programmers to easily write parallel as well as distributed software systems without having to use standard thread synchronization techniques like locks, monitors, semaphors, mutexes and volatile memory.
It is written in C# and runs on Microsoft .NET 2.0 or newer, as well as Mono.NET 1.9.1.
Message Passing Concurrency (MPC)
Using messages to communicate with nodes separated by a network is the simplest way to control a network of nodes. Two separate computers have no shared memory, no (simple) way to share state. Sending messages back and forth is the simplest, most elegant way of communication between two threads on two nodes.
But it is also a very simple way to communicate between two different threads on the same node. In MPC a thread is fully disengaged from the rest of the system. It shares no state with any other thread, and the only way to instruct a thread to do some processing, or alter its internal state, is by sending it a message. So the message must not allow state to be shared by two threads, and this is a fundamental property since two (or more) threads can execute on the same node.
Using only a few simple primitives to communicate between threads frees the programmer to worry about the task that needs to be solved instead of the technical difficulties need to accomplish this task. The framework takes care of all the boiler plate code needed to synchronize threads, and the three most important primitives a programmer ever has to know are Spawn, Send and Receive.
Connecting several nodes into a compute cluster is also handled in the framework.
Key features of MPAPI
- Easy parallel programming through the use of message passing concurrency instead of the traditional shared state concurrency.
- A few simple primitives to handle communication between - and control with - different threads.
- Cluster computing made simple through the same primitives regardless of whether a thread runs locally or on a different machine. The framework simplifies the connection of computing nodes.
- Cross-platform - the framework has been tested in a mixed environment with machines running Microsoft .NET 2.0, 3.0 and Mono.NET 1.9.1. The RemotingLite framework was written specifically to fascilitate the MPAPI frameworks need for service calls across networks, and was also specifically designed and written to run on Mono.NET.