Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Транзакции связывают несколько задач вместе. Например, представьте, что приложение выполняет две задачи. Во-первых, он создает новую таблицу в базе данных. Затем он вызывает специализированный объект для сбора, форматирования и вставки данных в новую таблицу. Эти две задачи связаны и даже взаимозависимо, поэтому вы хотите избежать создания новой таблицы, если только вы не сможете заполнить ее данными. Выполнение обеих задач в пределах одной транзакции обеспечивает соединение между ними. Если вторая задача завершается ошибкой, первую задачу откатывают к тому моменту, когда новая таблица еще не была создана.
Чтобы обеспечить прогнозируемое поведение, все транзакции должны обладать основными свойствами ACID (атомарными, согласованными, изолированными и устойчивыми). Эти свойства укрепляют роль критически важных транзакций как предложений «всё или ничего». Дополнительные сведения о ACID см. в разделе "Свойства ACID". В заключении, ACID гарантирует, что набор связанных задач либо успешно завершается, либо терпит неудачу как единое целое. В терминологии обработки транзакций, транзакция либо фиксируется, либо прерывается. Для фиксации транзакции все участники должны гарантировать, что любые изменения данных будут постоянными. Изменения должны сохраняться даже в случае фатального сбоя системы или других непредвиденных событий. Если даже один участник не может гарантировать эту гарантию, вся транзакция завершается ошибкой. Все изменения данных в области транзакции откатываются к определенной заданной точке.
Транзакция может быть ограничена одним ресурсом данных, например базой данных или очередью сообщений. В этом сценарии локальная транзакция управляется диспетчером транзакций, предоставляемым System.Transactions , что приводит к повышению производительности. Управляемые ресурсом данных, эти транзакции являются эффективными и простыми для управления.
Транзакции также могут охватывать несколько ресурсов данных. Распределённые транзакции позволяют включать несколько отдельных операций, происходящих в разных системах, в единое действие, которое либо выполняется, либо отменяется. В этом сценарии транзакции координируются координатором распределенных транзакций Майкрософт (MSDTC), который находится в каждой системе.
При разработке транзакционного приложения с помощью классов, предоставляемых System.Transactions, вам не нужно беспокоиться о том, какие транзакции необходимы, или о диспетчере транзакций. Инфраструктура System.Transactions автоматически управляет ими.
При создании транзакции можно указать уровень изоляции, который применяется к транзакции. Уровень изоляции, задаваемый IsolationLevel перечислением, определяет уровень доступа других транзакций к данным, затронутым вашей транзакцией.
Можно создавать транзакции, используя ADO.NET, System.EnterpriseServices или модель программирования транзакций, предоставляемую пространством имен System.Transactions. В разделе "Функции, предоставляемые System.Transactions" , рассматриваются функции, которые можно использовать для записи транзакционного приложения с помощью System.Transactions пространства имен.