Книга: C# для профессионалов. Том II
Назначение транзакций
Назначение транзакций
Транзакция является множеством операций, которые завершаются успешно или отказывают как целое, то есть, если одна операция в множестве отказывает, то все остальные, завершившиеся ранее, должны вернуться в исходное состояние, которое было до начала транзакции. Практический пример будет представлен ниже.
Рассмотрим web-сайт, который занимается в основном обработкой кредитных карт для заказов. Если пользователь заказывает на сайте какой-то продукт, то требуется, чтобы не только было выполнено списание с его счета, но чтобы запись заказа была помещена в базу данных заказов. Если возникает проблема с вводом записи о заказе в базу данных, то списание средств с кредитной карты должно быть отменено и заказ также должен быть отменен, иначе пользователь заплатит за товар, который он никогда не получит.
public void PlaceOrder(OrderInfo, objOrderInfo, UserInfo objUserInfo) {
CreditCard objCreditCard=new CreditCard();
OrderTable objOrderTable=new OrderTable();
// Шаг 1: Списание средств с кредитной карты
objCreditCard.PlaceCharge(objOrderInfo, objUserInfo);
// Если здесь возникает ошибка между шагами 1 и 2,
// то заказчик не получит продукт, за который
// он заплатил
// Шаг 2: Записать заказ
objOrderTablе.RecordOrder(objOrderInfo, objUserInfo);
}
В старые времена разработчики должны были создавать свои собственные схемы обеспечения транзакций, чтобы получить разновидность функциональности, упомянутой выше. Эти схемы включали обычно много логических переменных и детально разработанные стратегии обработки ошибок, и были подвержены ошибкам. Уже недавно объект ADODB.Connection
предлагал поддержку транзакций в достаточно элегантной форме. Теперь, с помощью объекта ContextUtil
, который мы скоро рассмотрим, службы COM+ предоставляет разработчикам механизм транзакций, который является надежным, готовым к использованию и более простым, чем подход ADODB.Connection
.
- Ограничение времени ожидания для транзакций (Lock timeout)
- Завершение транзакций
- 1. Назначение экспертных систем
- Глава 3 Нормативные руководящие документы, назначение и задачи информационной безопасности России
- 12.7.4. Переназначение клавиш на клавиатуре
- 4.1.1. Назначение прав
- 15.7.1 Назначение rpcbind
- Функции транзакций именованных каналов
- Использование возможностей множества транзакций
- Глава 1. Общая характеристика, назначение, история
- Назначение книги
- 15.1.1 Назначение NFS