When building a communications app on .NET, the answer is almost always WCF.
WCF does
- SOAP - including WS-*
- REST - XML, JSON, other
- sockets
- pipes
- binary formats
- Tibco RV
- IBM MQ
- MSMQ
- SAP
- lots more
The idea behind WCF is this: it is a general communications framework that maps over any communications substrate you wish to use. This means the programming model is consistent, the concepts are consistent, and the operations/administration is consistent. If you choose WCF and you want logging, it works the same way, regardless of what substrate you choose. AND, if you choose WCF, you can use named pipes when the parties are local, and switch to TCP when you distribute them. It requires no code change, only a configuration change. Which can be nice.
As for choosing the substrate - well, that is up to you. Depends on the features and capabilities you need, your requirements.