3. Транзакция

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

В рамках транзакции могут создаваться другие транзакции, называемые субтранзакциями.

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

ПРИМЕЧАНИЕ

Транзакции позволяют разработчику компонента определять исключительные ситуации, которые могут возникнуть при использовании данного компонента, не беспокоясь при этом о том, будут ли высвобождены ресурсы, используемые компонентом, при возникновении исключения где-то вне данного компонента.

Разработчику, использующему компоненты, транзакции предоставляют возможность не беспокоиться о высвобождении используемых ресурсов при возникновении исключения где-то в используемом компоненте.

Иными словами, транзакции обеспечивают связку концепции исключений с концепцией компонентного программирования, примером которых являются COM (Component Object Model) компании Microsoft или RAD (Rapid Application Development) компании Borland. Это позволяет использовать все преимущества данных концепций в приложениях, где требуется режим работы 24x7.

Не во всех языковых средах можно реализовать механизм исключений. Пример тому – PHP, не имеющий исключений и оператора goto. Тем не менее, концепция транзакций, реализованная на языке PHP, позволяет предоставить разработчику и администратору механизм замещения функций die() и trigger_error().

В рамках транзакции объект может создавать и уничтожать субтранзакции, но не может получить информацию ни о родительской транзакции, ни о других субтранзакциях данной субтранзакции.

ПРИМЕЧАНИЕ

С точки зрения объекта-клиента вызов функции всегда происходит в рамках текущей транзакции, то есть при практической реализации механизма транзакций все транзакции организуются в выделенный стек.

Далее

Автор: Андрей Шаройко <vanyamboe@gmail.com>