Поделиться через


Функциональные возможности, предоставляемые пространством имен System.Transactions

В этом разделе описывается, как можно использовать функциональные возможности, предоставляемые пространством имен System.Transactions, для создания собственного транзакционного приложения и диспетчера ресурсов. В частности, в этом разделе показано, как создавать транзакции и участвовать в транзакциях (локальных и распределенных) с одним или несколькими участниками.

Общие сведения о пространстве имен System.Transactions

Инфраструктура, предоставляемая классами в пространстве имен System.Transactions, делает программирование транзакций простым и эффективным, поддерживая транзакции, инициируемые в SQL Server, ADO.NET, MSMQ и координаторе распределенных транзакций (Майкрософт) (MSDTC). Пространство имен System.Transactions предоставляет как модель явного программирования, основанную на классе Transaction, так и модель неявного программирования, в которой используется класс TransactionScope, и транзакции автоматически управляются инфраструктурой. Дополнительные сведения о создании транзакционного приложения с помощью этих двух моделей см. в статье "Запись транзакционного приложения".

Пространство имен System.Transactions также предоставляет типы для реализации диспетчера ресурсов. Диспетчер ресурсов управляет устойчивыми или неустойчивыми данными, используемыми в транзакции, и работает совместно с диспетчером транзакций для предоставления приложения, гарантирующего атомарность и изоляцию. Диспетчер транзакций, предоставляемый инфраструктурой System.Transactions, поддерживает транзакции, которые охватывают несколько неустойчивых ресурсов или один устойчивый ресурс. Дополнительные сведения о реализации диспетчера ресурсов см. в разделе "Реализация Resource Manager".

Когда в транзакцию зачисляется дополнительный диспетчер устойчивых ресурсов, диспетчер транзакций также прозрачно повышает локальные транзакции до распределенных транзакций за счет координации с диспетчером транзакций на базе диска, подобным координатору распределенных транзакций. Инфраструктура System.Transactions обеспечивает повышенную производительность двумя основными способами.

  • Динамическое повышение. Инфраструктура System.Transactions задействует координатор MSDTC, только когда транзакция охватывает несколько распределенных ресурсов. Дополнительные сведения о динамическом укрупнении См . раздел "Эскалация управления транзакциями ".

  • Повышаемое зачисление. Позволяет ресурсу, например базе данных, стать владельцем транзакции, если он является единственной сущностью, участвующей в транзакции. Позднее инфраструктура System.Transactions при необходимости может передать управление транзакцией координатору MSDTC. Это дополнительно уменьшает вероятность использования координатора MSDTC. Проверочные перечисления подробно рассматриваются в разделеоптимизации с помощью однофазной фиксации и уведомления с одним этапом.

Пространство имен System.Transactions определяет три уровня доверия - AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission(DTP) и FullTrust, ограничивающие доступ к используемым ресурсам различных типов. Дополнительные сведения о различных уровнях доверия см. в разделе "Уровни доверия безопасности" в службах доступа к ресурсам.

В этом разделе

Создание транзакционного приложения

Пространство имен System.Transactions предоставляет две модели для создания транзакционных приложений. Реализация неявной транзакции с помощью области транзакций описывает, как System.Transactions пространство имен поддерживает создание неявных транзакций с помощью TransactionScope класса.

Реализация явной транзакции с помощью CommitableTransaction описывает, как System.Transactions пространство имен поддерживает создание явных транзакций CommittableTransaction с помощью класса.

Дополнительные разделы, посвященные написанию транзакционного приложения, см. в статье "Написание транзакционного приложения".

Реализация диспетчера ресурсов

Сведения о реализации диспетчера ресурсов, который может участвовать в транзакции, см. в статье "Реализация Resource Manager". В этом разделе описывается порядок зачисления ресурса, фиксации транзакции и восстановления после сбоя, а также рассматриваются рекомендации по оптимизации.