> However, as systems get more and more complex, this is not > always possible, and a 'business tier' component may have to > call several other 'business components' (each of which call > several 'data tier' components) as well as several 'data > tier' components to complete its task.
Hmm. If I read your message right, I think you may be making an assumption that I don't necessarily agree with. This assumption is that the data objects - the ones that hold state - are the ones that have to have the transactional code in them. Have you considered making your object hierarchy data-only and passing it *by value* to a processor object method? You get to keep your object hierarchy for manipulating the data, and you get to keep your processor model for transactional operations against the data. By making it pass-by-value, you save potentially expensive cross-host communication between the processor object and its client. But perhaps this isn't possible for you to do, because of investment in existing code, etc. In that case, you have the options I mentioned previously to check out! You can read messages from the Advanced DOTNET archive, unsubscribe from Advanced DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.