I was recently at a lecture concerning .Net and COM+. Wow. COM+ is really powerful. I never got the chance to work with it on any of the projects I have created, but I did play with it here and there. I never knew there was so much it provided, though. I only knew about connection pooling and object pooling, and Distributed transaction support. One of the things mentioned with regards to transaction processing was this:
Suppose you have a set of actions which also needs to update an external file on success. Encompassing this in a transaction is pretty simple, until we come to the file processing. this cannot be encompassed with transactions since it's not a database related action. However, COM+ support what is called "Compensating Resource Manager". this allows you to basically add your own support for the transaction, and perform custom actions that support transactions. This is not trivial, however and not very well known.
This whole concept brings to mind something I have heard about the upcoming version of "