Функциональные возможности, предоставляемые пространством имен 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". В этом разделе описывается порядок зачисления ресурса, фиксации транзакции и восстановления после сбоя, а также рассматриваются рекомендации по оптимизации.