Explicit Transaction Programming
The transactional programming model described so far can only be
used declaratively by transactional services. Non-service clients,
nontransactional services, and plain .NET objects called downstream by a
service cannot take advantage of it. For all these cases, WCF relies on
the transactional infrastructure available with .NET in the System.Transactions
namespace. You may also rely on System.Transactions
even in transactional
services, when exploiting some advanced features such as transaction
events, cloning, asynchronous commits, and manual transactions. I
described the capabilities of
System.Transactions
in my MSDN
whitepaper “Introducing System.Transactions in the .NET Framework 2.0”
(published April 2005; updated December 2005). The following sections
contain excerpts from that article describing how to use the core
aspects of System.Transactions
in the
context of WCF. Please refer to the whitepaper for detailed discussions
of the rest of the features.
The TransactionScope Class
The most common way of using transactions explicitly is
via the TransactionScope
class:
public sealed class TransactionScope : IDisposable
{
public TransactionScope();
//Additional constructors
public void Complete();
public void Dispose();
}
As its name implies, the TransactionScope
class is used to scope a
code section with a transaction, as demonstrated in Example 7-7.
Example 7-7. Using TransactionScope
using(TransactionScope scope = new TransactionScope()) { /* Perform ...
Get Programming WCF Services, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.