Did you know that you can control the transaction protocol in your configuration? WCF provides OleTx used for transactions occurring on a Microsoft platform, Wsat for Ws-Atomic transactions and TxNegro which allows the service to expose both.
<bindings>
<netTcpBinding>
<binding name = “Sample”
…
transactionProtocol = “Wsat”
…
</netTcpBinding>
</bindings>
The following summarises the default support for transactions:
Binding Default Protocol
----------------------------------------------------------------------------
BasicHttpBinding Tx not supported
WSHttpBinding WS-AT
WsDualHttpBinding WS-AT
WsFederationBinding WS-AT
NetTcpBinding OleTx
NetNamedPipeBinding OleTx
NetMsmqBinding OleTx
NetPeerTcpBinding Tx not supported
MsmqIntegrationBinding OleTx
Note above that we seem to have two MSMQ bindings we can chose from. Use MsmqIntegrationBinding if either the service or consumer are not using WCF for communications. If both use WCF, use NetMsmqBinding instead.