The role of transactions in aggregated services
One of the principles of SOA that we discussed earlier in this book is the concept of abstraction. That is, shielding service clients from all sorts of implementation details with which they should not be concerned. One way to promote abstraction is through the use of aggregate services. Instead of having a service client call a series of required services that result in a new customer being added to a system, we should instead expose a single CreateCustomer
operation that internally navigates the set of necessary system services. BizTalk orchestration is practically built for this situation. By injecting a stateful, cross-domain processing engine, our solution can coordinate a wide range of activities that our initiating service client never knows about.
However, one challenge with aggregating services in a single business process is figuring out how to effectively wrap these disconnected services into a single participating transaction. While...