Опубликован: 11.05.2007 | Уровень: специалист | Доступ: платный
Лекция 7:

Промежуточная среда COM+ и служба Enterprise Services

6.2. Сервисы COM+

Целью создания промежуточной среды COM+ являлось предоставление компонентам COM+ набора сервисов, облегчающему создание надежной и масштабируемой распределенной системы. Начиная с Windows 2003/XP SP2, часть этих сервисов может быть доступна и без создания компонент COM+, путем использования так называемых сервисов без компонент.

Синхронизация

Среда COM+ позволяет исключить проблемы с синхронизацией при обслуживании запроса клиента путем так называемых активностей. Активность начинается в момент создания клиентом COM+ объекта и заканчивается при его удалении. В течении активности клиент вызывает методы компоненты COM+, в ходе которых она может создавать другие объекты COM+, в том числе расположенные на удаленных компьютерах, и вызывать их методы. При этом COM+ гарантирует, что в течение одной активности в каждый момент выполняется метод только одного COM+ объекта из всех участвующих в активности. Таким образом, активность представляет собой некий логический поток. Объекты COM+ могут как участвовать в активности (требовать синхронизации), так и не участвовать, в зависимости от атрибутов соответствующей им компоненты COM+ и текущего контекста при их создании, как показано в таблице 6.1.

Таблица 6.1. Синхронизация создаваемого объекта COM+
Настройка синхронизации компоненты COM+ Создатель объекта участвует в активности Создатель объекта не участвует в активности
Не поддерживается (Not Supported) Вне активности Вне активности
Поддерживается (Supported) Активность создателя Вне активности
Требуется (Required) Активность создателя Новая активность
Требуется новая (Requires new) Новая активность Новая активность

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

Балансировка нагрузки

COM+ поддерживает динамическую балансировку нагрузки. Для этого необходимо создать кластер COM+ на базе серверной версии операционной системы Microsoft Windows (Windows 2000 Advanced Server и последующих). Кластер COM+ состоит из нескольких серверов и распределяющим между ними запросы маршрутизатором COM+. Для повышения надежность такой системы могут применяться способы быстрой замены маршрутизатора при его выходе из строя на базе Windows Clustering Services. Таким образом, среда COM+ позволяет при наличии необходимости достаточных финансовых ресурсов создать хорошо масштабируемую систему без уникальной точки сбоя.

Just-in-time активация и пул объектов

Среда COM+ поддерживает два вида активации объектов – активация по требованию клиента и активация на время единственного вызова (называемая в среде COM+ JIT активацией) с возможностью использования пула объектов. Поскольку распределенные транзакции поддерживаются только для второго типа активации, в дальнейшем будет рассматриваться только он.

Распределенные транзакции

Одним из основных достоинств среды COM+ является поддержка распределенных транзакций на базе координатора распределенных транзакций. Настройки транзакции компоненты COM+ влияют на настройки синхронизации и активации. Любая включенная настройка транзакций, отличная от Not supported, требует использования JIT активации и ограничивает выбор настройки синхронизации не более чем вариантами Required и Requires new. При активации объекта среда COM+ определяет необходимость использования транзакций в соответствии с таблицей 6.2.

Таблица 6.2. Участие объекта COM+ в транзакции
Настройка транзакции компоненты COM+ Создатель объекта участвует в транзакции Создатель объекта не участвует в транзакции
Не поддерживается (Not Supported) Вне транзакции Вне транзакции
Поддерживается (Supported) Транзакция создателя Вне транзакции
Требуется (Required) Транзакция создателя Новая транзакция
Требуется новая (Requires new) Новая транзакция Новая транзакция

Если при создании объекта обнаружена потребность в создании новой транзакции, среда COM+ создает ее с помощью координатора транзакций и данный объект считается корнем транзакции (рис. 6.2). Поскольку требующие транзакцию объекты используют активацию одного вызова, то транзакция не может существовать дольше, чем один вызов метода корневого объекта клиентом COM+. В транзакции могут участвовать службы, имеющие свой менеджер ресурсов, в частности MSMQ и MS SQL. Для многих ресурсов при необходимости можно создать свой компенсирующий менеджер ресурсов.

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

Рис. 6.2. Транзакция COM+

Каждый из участвующих в транзакции объектов должен в конце выполнения своего метода сообщить об успешности транзакции или ее неудаче. В случае, если все объекты объявили об успешности транзакции, служба COM+ оповещает все участвующие в транзакции внешние службы о необходимости сделать произведенные в рамках транзакции изменения постоянными (рис. 6.3).

Успешное завершение транзакции COM+

Рис. 6.3. Успешное завершение транзакции COM+
Екатерина 2
Екатерина 2
Россия, г. Москва
pankaj kowale
pankaj kowale
Индия, bandra