通过用WCF本身的Log功能或者用smsniff监控一下网络消息,就可以知道MachineA和MachineB传递的消息和一般的WCF程序不一样,消息遵循了WS-AtomicTransaction工业标准。下面是监控到的一部分消息内容:
第一段消息是没有使用事务的方法调用的消息,第二段是使用WS-AT事务的方法的调用的消息。
从第二段消息可以看出,明显加入了WS-Coordination、WS-Transaction、WS-Addressing的内容。对比一下IBM WAS生成的WS-AT消息(使用 WS-AtomicTransaction 和 JTA 的分布式事务:http://www.ibm.com/developerworks/cn/webservices/ws-wsat/ ),除了协议中自定义部分“ReferenceProperties”,其他基本上是一致的。
也可以看出来,WCF很好的实现了WS-AT协议。下一步打算测试一下WCF WS-AT和java web service的互操作性(虽然Sun声明它的产品和微软的WCF具有很好的互操作性http://www.infoq.com/cn/news/2007/04/sunmsftwsat),呵呵
如果修改一下配置文件,使用OletxTransaction,而不是WS-AT的话,就得到不一样的消息: