Книга: C# для профессионалов. Том II

Транзакции COM+ 

Назначение транзакций

Транзакция является множеством операций, которые завершаются успешно или отказывают как целое, то есть, если одна операция в множестве отказывает, то все остальные, завершившиеся ранее, должны вернуться в исходное состояние, которое было до начала транзакции. Практический пример будет представлен ниже.

Рассмотрим 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.

Оглавление книги


Генерация: 1.533. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз