понедельник, августа 28, 2006

Транзакции в .NET 2.0

Namespace System.Transaction, и новый объект TransactionScope делают тривиальной задачу использования транзакций в новых приложениях и добавление поддержки транзакций в существующие (при условии что они были портированы на .NET 2.0).

В моем случае мне надо было добавить поддержку транзакций в приложение, используеющее Data Access Application Block (DAAB). В примере из документации по DAAB используется объект DbTransaction. Лично мне этот метод кажется не удобным по сравнению с использованием TransactionScope. Так как объект DbTransaction надо предавать как параметр в вызовы методов ExecuteXxxxx, то нужно организовать flow этого объекта через/между класс(ы) бизнес логики. Особенно это не удобно при добавлении поддержки транзакций к существующему приложению.

При использовании TransactionScope никакого flow объекта через бизнес логику организовывать не надо. Просто надо заключить код, который должен выполнятся в рамках одной транзакции в такую конструкцию:

using(TransactionScope scope = new TransactionScope())
{
     DoSomeActionInTransaction();
     DoAnotherActionInTheSameTransaction();

     scope.Complete();
}

Вот так вот  все легко и прозрачно :)

P.S. Еще один дополнительный плюс TransactionScope по сравнению с DbTransaction в том, что он не принадлежит namespace System.Data. Соответственно, поддерживаются не только DB-транзакции. Очень удобно когда бизнес логика и доступ к данным разделены.

4 Comments:

Blogger Dima Pasko said...

читая прошлые посты - интересно узнать:

перешел ты на новую работы или нет :-) ?

августа 29, 2006 8:26 PM  
Blogger Programmist said...

Перешёл :)
Завтра будет уже два года как на новой.

августа 30, 2006 12:38 AM  
Anonymous Анонимный said...

Понятно :-)

а куда если не секрет :-) ?

августа 30, 2006 11:26 AM  
Blogger Programmist said...

Stella Systems

августа 30, 2006 11:35 AM  

Отправить комментарий

<< Home