There are two bindings in WCF that use MSMQ as the underlying transport:
1. NetMsmqBinding : used for communication between two WCF applications.
2. MsmqIntegrationBinding : used for communication between a WCF app and a native MSMQ app (i.e which uses the MSMQ C/COM or System.Messaging APIs).
From the scenario you describe, it looks like you are leaning towards (1)? In that case, the developer experience should be agnostic of the transaport being used underneath. For the server side, you will define and implement a contract and host the service on an endpoint that uses the NetMsmqBinding. For hte client side, you will create a proxy off of this endpont and call methods on this proxy just like you do with other bindings.