Функциональные возможности, предоставляемые пространством имен System.Transactions
[Этот раздел является частью предварительной документации и может быть изменен в следующих версиях. Пустые разделы включены в документацию в качестве прототипов.]
В этом разделе описывается, как можно использовать функциональные возможности, предоставляемые пространством имен System.Transactions, для создания собственного транзакционного приложения и диспетчера ресурсов. В частности, в этом разделе показано, как создавать транзакции и участвовать в транзакциях (локальных и распределенных) с одним или несколькими участниками.
Общие сведения о пространстве имен System.Transactions
Инфраструктура, предоставляемая классами в пространстве имен System.Transactions, делает программирование транзакций простым и эффективным, поддерживая транзакции, инициируемые в SQL Server, ADO.NET, MSMQ и координаторе распределенных транзакций (Майкрософт) (MSDTC). Пространство имен System.Transactions предоставляет как модель явного программирования, основанную на классе Transaction, так и модель неявного программирования, в которой используется класс TransactionScope, и транзакции автоматически управляются инфраструктурой. Дополнительные сведения о создании транзакционного приложения с помощью этих двух моделей см. в разделе Создание транзакционного приложения.
Пространство имен System.Transactions также предоставляет типы для реализации диспетчера ресурсов. Диспетчер ресурсов управляет устойчивыми или неустойчивыми данными, используемыми в транзакции, и работает совместно с диспетчером транзакций для предоставления приложения, гарантирующего атомарность и изоляцию. Диспетчер транзакций, предоставляемый инфраструктурой System.Transactions, поддерживает транзакции, которые охватывают несколько неустойчивых ресурсов или один устойчивый ресурс. Дополнительные сведения о реализации диспетчера ресурсов см. в разделе Реализация диспетчера ресурсов.
Когда в транзакцию зачисляется дополнительный диспетчер устойчивых ресурсов, диспетчер транзакций также прозрачно повышает локальные транзакции до распределенных транзакций за счет координации с диспетчером транзакций на базе диска, подобным координатору распределенных транзакций. Инфраструктура System.Transactions обеспечивает повышенную производительность двумя основными способами.
Динамическое повышение. Инфраструктура System.Transactions задействует координатор MSDTC, только когда транзакция охватывает несколько распределенных ресурсов. Дополнительные сведения о динамическом повышении см. в разделе Передача управления транзакцией на следующий уровень иерархии.
Повышаемое зачисление. Позволяет ресурсу, например базе данных, стать владельцем транзакции, если он является единственной сущностью, участвующей в транзакции. Позднее инфраструктура System.Transactions при необходимости может передать управление транзакцией координатору MSDTC. Это дополнительно уменьшает вероятность использования координатора MSDTC. Повышаемое зачисление подробно рассматривается в разделеОптимизация производительности с помощью механизмов уведомления об однофазной фиксации и повышаемого однофазного уведомления.
Пространство имен System.Transactions определяет три уровня доверия — AllowPartiallyTrustedCallers (APTCA), DistributedTransactionPermission(DTP) и FullTrust, ограничивающие доступ к используемым ресурсам различных типов. Дополнительные сведения о различных уровнях доверия см. в разделе Уровни доверия системы безопасности, используемые при доступе к ресурсам.
В данном разделе
Создание транзакционного приложения
Пространство имен System.Transactions предоставляет две модели для создания транзакционных приложений. В разделе Реализация неявной транзакции с использованием области транзакции описывается, как пространство имен System.Transactions поддерживает создание неявных транзакций с использованием класса TransactionScope.
В разделе Реализация явной транзакции с помощью класса CommittableTransaction описывается, как пространство имен System.Transactions поддерживает создание явных транзакций с использованием класса CommittableTransaction.
Дополнительные сведения о создании транзакционного приложения см. в разделе Создание транзакционного приложения.
Реализация диспетчера ресурсов
Сведения о реализации диспетчера ресурсов, который может участвовать в транзакции, см. в разделе Реализация диспетчера ресурсов. В этом разделе описывается порядок зачисления ресурса, фиксации транзакции и восстановления после сбоя, а также рассматриваются рекомендации по оптимизации.