+2  A: 

To answer your basic question. Yes. Every PC would have to have the MSMQ service running. I don't think MSMQ is meant for a general user kind of software, but for enterprise.. server to server communication. I could certainly be wrong, but with the limitation you are asking about I don't see how it could be used for commercial software either.

Clarence Klopfstein
I guess that is why the call them ESBs (Enterprise Service Bus). It seems to be more about integrating *systems* than integrating client PCs *into* a system, though the distinction is dubious. Very well; thank you.
Jay
+3  A: 

An ESB (or even a lightweight option like MassTransit or NServiceBus) is really not designed for client/server communication. If you have a thick-client application that needs to communicate with back-end services, it may be more sensible to build a SOAP and/or REST layer that the clients communicate with instead. Behind that service layer, you could use messaging internally depending upon your scaling requirements. Messaging is very useful to deal with highly dynamic loads, along with other technologies such as caching.

If you want to do messaging on the client, you might consider using a broker style messaging system (ActiveMQ fits here, it's a regular TCP/IP connection) and connect to it from the client. It's a way to do it, not necessarily the best way depending upon your situation. MassTransit can use ActiveMQ, allowing you to abstract the programming API of MSMQ/ActiveMQ into a more universal transport interface.

There are many options when designing distributed systems, whether or not you need client-to-client communication versus client-to-server communication can really help differentiate the various technology options.

Chris Patterson