Shared memory along with semaphores is the fastest and most transparent if you like to build software right from the primitives.
Named pipes are not too different from pipes and work well between a pair of processes and not a server and many clients.
If you like to build upon existing infrastructure, dBus is an option.
Socket communication is versatile and scales well if you wish to move your applications across hosts on a network.