Организация транзакций в System. Transact ions

net был разработан совершенно новый

В. NET 2.0 был разработан совершенно новый подход к написанию транзакционного кода, реализованный в пространстве имен System.Transactions. При помощи классов, определенных в этом пространстве имен, вы можете теперь в своем коде очень просто начинать или соединять транзакции, не привязываясь непосредственно к транзакционным возможностям базы данных или какого-то другого менеджера ресурсов транзакции. Транзакции, создаваемые посредством классов System.Transactions, Могут быть как облегченными транзакциями с единственным менеджером ресурсов, таким, как одиночная база данных SQL Server 2005, так и распределенными транзакциями, в который участвует несколько менеджеров ресурсов, как в базе данных SQL 2000, базе данных Oracle и очереди сообщений MSMQ. Другой замечательной особенностью новых транзакционных средств является то, что транзакция будет автоматически переводить себя из облегченной транзакции в распределенную, если она видит, что в области действия транзакции происходит обращение к новому менеджеру ресурсов, который требует распределенной транзакции, поэтому вам не нужно беспокоиться в своем коде относительно корректного использования различных моделей. Чтобы использовать System.Transactions, Вы прежде всего должны добавить в свой проект ссылку на сборку System. Transactions. dll из. NET Framework. Затем нужно включить пространство имен System.Transactions В файлы кода, где вы будете его использовать. Когда вам нужно будет исполнить некоторый код внутри транзакции, вы устанавливаете транзакционную область действия, создавая экземпляр класса Transac — TionScope. Затем вы исполняете код, который должен быть транзакционным, и если все проходит успешно, вызываете метод Complete Объекта TransactionScope. Транзакция на самом деле не будет зафиксирована до тех пор, пока вы не уничтожите объект области действия, а если вызвать Dispose Без предварительного вызова Complete Объекта области действия, транзакция будет прервана.

Проще всего проделать все это в C# при помощи блока Using. Когда вы организуете блок Using В С#, вы передаете предложению Using Объектную ссылку, являющуюся уничтожаемым объектом. Когда происходит выход из блока Using, Для объекта автоматически будет вызван Dispose, Даже если транслируется исключение. Это происходит потому, что генерируемый компилятором код для блока Using Включает блок Try-Finally, И в блоке Finally Вызывается Dispose Для аргумента предложения Using.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *