Library tutorials & articles

Overview of Automated Transactions

Two or more .NET Framework objects can participate in the same transaction. One or more .NET Framework objects can participate in the same transaction as one or more COM+ objects. All objects must be hosted in Microsoft Windows 2K Component Services so as to receive services such as transaction processing.

There are several considerations you must address in designing transactions that span COM+ and .NET Framework objects. For example, in order for a .NET Framework object to participate in an automatic transaction, the .NET Framework class must be registered with Window 2K Component Services. However, not all transactions are automatic. The activities you perform when programming transactions depend on the transaction model you choose.

Microsoft Transaction Server (MTS), COM+, and the Common Language Runtime support the same automatic, distributed transaction model.

Once an ASP.NET page, WebMethod, or .NET Framework class is marked to participate in a transaction, it will automatically execute within the scope of a transaction. You can control an object's transactional behavior by setting a transaction attribute value on the page, WebMethod, or class. The attribute value, in turn, determines the transactional behavior of the instantiated object.

Thus, based on the declared attribute value, an object will automatically participate in an existing or ongoing transaction, be the root of a new transaction, or never participate in a transaction at all .The ASP.NET framework supports automatic transactions on Windows 2K . By inserting a transaction directive in your ASP.NET page, you can instruct the page to participate in an existing transaction, begin a new transaction, or never participate in a transaction.

The table below lists and describes the transaction directives available in ASP.NET.

Directive Description
NotSupported This value indicates that the page does not run within the scope of transactions. When a request is processed, its object context is created without a transaction, regardless of whether there is a transaction active.
Supported The page will run in the context of an existing transaction, if one exists. If not, it will run without a transaction.
Required The page requires a transaction. It will run in the context of an existing transaction, if one exists. If not, it will start one.
RequiresNew The page requires a transaction and a new transaction will be started for each request.

You can indicate the level of transaction support on a page by placing the directive in your code. For example, you can ensure that the page activities always execute in the scope of a transaction by inserting the following directive:

<%@ Page Transaction="Required" %>

The default transaction state is None, which indicates that the transaction context will be ignored by the ASP.NET framework.

There is no explicit directive for this value; in other words, you cannot add page Transaction="None" to your page. Instead, simply omit the transaction directive to apply the default value.

Comments

  1. 01 Jan 1999 at 00:00

    This thread is for discussions of Overview of Automated Transactions.

Leave a comment

Sign in or Join us (it's free).

Kamran Shakil I am 22 male. BS(Computer Science), MCSE, Brainbench certifed. Member of .NET Open source, Mono Project. E-author on various websites, including www.dotnetextreme.com, www.csharphelp.com and so on....

Related podcasts

Events coming up

  • Mar 15

    DevWeek 2010

    London, United Kingdom

    DevWeek is Europe’s leading independent conference for software developers, database professionals and IT architects, and features expert speakers on a wide range of topics, including .NET 4.0, Silverlight 3, WCF 4, Visual Studio 2010, REST, Windows Workflow 4, Thread Synchronization, ASP.NET 4.0, SQL Server 2008 R2, LINQ, Unit Testing, CLR & C# 4.0, .NET Patterns, WPF 4, F#, Windows Azure, ADO.NET, Entity Framework, Debugging, T-SQL Tips & Tricks, and more.

Want to stay in touch with what's going on? Follow us on twitter!