Message Queuing (MSMQ) technology enables applications running at different times to communicate across heterogeneous networks and systems that may be temporarily offline. Applications send messages to queues and read messages from queues. The following illustration shows how a queue can hold messages that are generated by multiple sending applications and read by multiple receiving applications.
Message Queuing is accessible by way of several programming interfaces. The .NET Framework includes a System.Messaging class library that allows access to MSMQ, and this is available to any one of 20 .NET languages, including VB.NET, C#, J#, and many others. In addition, there is a C/C++ library available, as well as a COM library for COM-enabled environments
Message Queuing can be accessed and used by any Windows application, including Windows Forms applications that present graphical user interfaces (GUIs), smart client applications built on top of the Microsoft Office System, server-side applications running within ASP.NET, Windows Services, and others.
http://msdn.microsoft.com/en-us/library/ms711472.aspx