Friday, 30 September 2011

How to implement DTC (Distributed Transactions Coordinator) in .NET ?


DTC is implemented using COM+.
Following are the steps to implement COM + in .NET :
§  "EnterpriseService" namespace has all the classes by which we can implement DTC in .NET. You have to add reference to "EnterpriseService" namespace.
§  You class must derive from "ServicedComponent" object.
§  Then you have to define your class with the transaction attribute [ Transaction(TransactionOption.RequiresNew) ]
§  After the class level transaction type is defined. Its time to define at the method level the AutoComplete attribute. Autocomplete attribute says that if no exception is thrown then mark its part of the transaction as being okay. This helps cut down on the amount of code required. If the implementation sets AutoComplete to false, or omits it all together, then we would need to manage the transaction manually. To manually control the transaction you will need to use the ContextUtil class and its static members. Following is small snippet of ContextUtil:

public void SampleFunction()
{
try
{
// Do something to a database
// ...
// Everything okay so far Commit the transaction
ContextUtil.SetComplete();
}
catch(Exception)
{
// Something went wrong Abort and Rollback the Transaction.
ContextUtil.SetAbort();
}
}
§  Component derived from "ServicedComponent" should be strong named as they run under COM+.
§  Once the classes are compiled using the string name.Register the Component in COM+ services using 
regsvcs c:\DllPath\TransactionComponent.dll
You can see that the component is registered using the COM+ Explorer

No comments:

Post a Comment