Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
440-620.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.13 Mб
Скачать
  1. Синхронизация

Базовый механизм синхронизации в DCOM реализован в форме транзакций. Этот механизм мы рассмотрим чуть позже при обсуждении вопросов отказо­устойчивости в DCOM.

  1. Репликация

Стандартной поддержки репликации в приложениях DCOM не существует. Реп­ликация может осуществляться только при помощи специальных служб, таких как Active Directory. Что касается пользовательских приложений, разработчику придется разрабатывать собственные решения.

  1. Отказоустойчивость

В основном отказоустойчивость в DCOM обеспечивается при помощи автома­тических транзакций (automatic transactions), которые представляют собой не­отъемлемую часть СОМ+. Автоматические транзакции позволяют разработчику определить набор обращений к методам, в том числе к методам различных объек­тов, которые нужно объединить в транзакцию. Также можно представить в виде транзакции и одиночное обращение к методу. Этот вариант используется в том случае, когда реализация метода предполагает работу с базой данных.

Транзакции в объектной среде создаются автоматически, в зависимости от того, как сконфигурирован соответствующий объект класса. Каждый объект класса имеет атрибут транзакции, который определяет поведение этого объекта в транзакции. Возможные значения этого атрибута перечислены в табл. 9.7.

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

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

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

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

И, наконец, если объект показывает, что поддержка транзакций отключена (DISABLED), то вне зависимости от пожеланий клиента объект не будет участво­вать в транзакциях. Отключение транзакций — это более жесткий вариант, чем просто отсутствие поддержки. В последнем случае клиент, от которого исходит обращение, может попытаться включить в транзакцию объект, к которому это обращение направлено. Если поддержка транзакций отключена, это невозможно.

Вообще говоря, автоматические транзакции обычно реализуются при помо­щи отдельного менеджера транзакций. Во многих случаях используется менед­жер транзакций Windows, известный как координатор распределенных транзак­ций (Distributed Transaction Coordinator, DTC) корпорации Microsoft. DTC — это относительно стандартный менеджер транзакций, реализующий протокол двух­фазного подтверждения, описанный в главе 7.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]