On this ARCast, Architect MVP Juval Löwy is talking about distributed transactions (ie.. WS-Transaction) as a violation of the “Autonomous” tenant of service orientation or not. I agree with Roger Sessions:
Atomic transactions require holding locks, and spanning transactions across services requires allowing a foreign, untrusted service to determine how long you will hold your very precious database locks. Bad idea.
Juval says it is not a violation of the “Autonomous” tenant of SO but the common sense tenant of not locking resource for external service for a long time.
Using atomic transaction help a lot for development, taking care of failure, rollback, locking in a transparent manner. If you can use them…do it! As soon as you interact with external services, add tolerance in your implementation. I think this is also true for every kind of development regarding external process, service or data input: add tolerance and flexiility, do not trust. If you build an application receving data input from a file, do absolutefly no assumption even on the format.