October 2006
Intermediate to advanced
880 pages
22h 11m
English
Let's start with some background information. Application functionality requires that several things be done at the same time. For example, when an auction finishes, three different tasks have to be performed by the CaveatEmptor application:
Mark the winning (highest amount) bid.
Charge the seller the cost of the auction.
Notify the seller and successful bidder.
What happens if you can't bill the auction costs because of a failure in the external credit-card system? The business requirements may state that either all listed actions must succeed or none must succeed. If so, you call these steps collectively a transaction or unit of work. If only one step fails, the whole unit of work must fail. This is known as atomicity ...