Вход/Регистрация
Интернет-журнал "Домашняя лаборатория", 2007 №6
вернуться

Журнал «Домашняя лаборатория»

Шрифт:

Далее мы перейдем к рассмотрению того, как распределенные транзакции реализованы в СОМ+. Но предварительно уместно остановиться на вопросе совместимости менеджеров транзакций и менеджеров ресурсов от различных поставщиков. Очевидно, что при работе на платформе СОМ+ разработчик будет использовать менеджер транзакций этой платформы, который будет без проблем понимать и прикладные компоненты, созданные на этой платформе. Несомненно, этот менеджер транзакций способен регистрировать для участия в транзакции менеджеров ресурсов, разработанных в Microsoft. Это Microsoft SQL Server, Microsoft Message Queue Server. Но как быть с менеджерами транзакций от других поставщиков?

Имеется стандарт X/Open Distributed Transaction Model от консорциума Open Group. Эта модель специфицирует несколько интерфейсов, среди которых два описывают взаимодействие между прикладными компонентами, менеджером транзакций и менеджерами ресурсов:

• ТХ интерфейс

Данный интерфейс реализуется менеджером транзакций и используется прикладными компонентами при формировании транзакции, информировании менеджера транзакций о согласии данного компонента завершить текущую транзакцию успешно или о требовании выполнить откат и т. п.

• ХА интерфейс

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

Для совместимости менеджера транзакций из СОМ+ с менеджерами ресурсов от других поставщиков в СОМ+ предусмотрена поддержка ХА интерфейса. В результате в распределенную транзакцию, порожденную прикладными компонентами выполняющимися под СОМ+, могут быть вовлечены менеджеры ресурсов для таких систем хранения данных как Oracle, Informix, IBM DB2, Sybase SQL Server, Ingres, выполняющихся на различных платформах.

Теперь перейдем непосредственно к транзакционной модели, реализованной в СОМ+.

Модель транзакций в СОМ+

Прикладные компоненты

Начнем с прикладных компонентов. В СОМ+ прикладным компонентом является экземпляр конфигурированного класса, который должен быть описан определенным набором атрибутов. Связанные с транзакциями атрибуты и их возможные значения будут приведены далее.

Прежде всего участие или неучастие объекта в транзакции определяется его транзакционным атрибутом. Значение этого атрибута может быть задано как разработчиком класса (в IDL файле, содержащем описание данного класса), так и администратором (посредством использования Component Services).

Для задания этого атрибута посредством IDL файла достаточно включить одно из возможных его значение в список атрибутов, предваряющий описание соответствующего класса.

Указанный атрибут после компиляции IDL файла будет храниться в библиотеке типов.

При использовании Component Services необходимое значение атрибута задается на вкладке Transactions.

Транзакционный атрибут может принимать одно из пяти значений (ниже эти значения приведены в той форме, которая используется в Components Services):

• Disabled

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

• Not Supported

Объект, которому приписано это значение, не только сам отказывается участвовать в каких-либо транзакциях, но и не распространяет транзакцию на объекты, активацию которых он инициирует. Иными словами, пусть объект А выполняется в транзакции Т1, объект В активируется объектом А и имеет Not supported в качестве значения транзакционного атрибута. Пусть, наконец, объект С активируется объектом В. Тогда, не зависимо от значения транзакционного параметра, приписанного объекту С, данный объект не будет выполняться в транзакции Т1.

• Supported

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

• Required

При выборе этого значения мы получаем объект, который всегда выполняется в контексте некоторой транзакции. Если его активатор уже принадлежит некоторой транзакции, то и он принадлежит той же транзакции. В противном случае при активации объекта порождается новая транзакция, в контексте которой и будет выполняться данный объект. Заметим, что в последнем случае этот объект называется корнем транзакции, в контексте которой он выполняется.

  • Читать дальше
  • 1
  • ...
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: