I'm busy building a software update application in C#, WinForms, .NET 3.5, where I have a collection of pluggable task classes with a common base class. I would like one task, the database upgrade, to begin a transaction, and another task, the web site upgrade, to commit or roll back the same transaction, so the web site and DB are always in sync.
I vaguely remember stuff from my VB6 days where a COM+ method could enlist in a transaction if one was already running, or begin one if not, etc. I also have vague memories of this porting to .NET Enterprise Services, but that was also a while ago.
What is the current technology to use to achieve this?