Транзакции в пространстве объектов |
Пространство объектов будет действительно единым только в том случае, если будет предоставлять общий механизм управления транзакциями. Независимо от того, располагаются объекты в рамках одного или в разных сервисах, пользователь (или некий клиент, работающий от имени пользователя) должен иметь возможность сделать совокупность изменений объектов в виде одной транзакции. Ни пользователь, ни разработчик клиентов не должен задумываться о том, будет ли транзакция распределенной или останется локальной - это будет определено по фактическому расположению изменяемых объектов.
Поэтому все сервисы, формирующие пространство объектов, используют семейство совместимых между собой менеджеров транзакций, с едиными правилами взаимодействия между собой, включая правила идентификации транзакций, двухфазную фиксацию распределенных транзакций и т.п. Инициируя последовательность изменений объектов через некоторый сервис, клиент неявно активирует менеджер транзакций этого сервиса. В том случае, если затронуты объекты, находящиеся под управлением других сервисов, менеджеры транзакций этих сервисов прозрачно получат контекст той транзакции, в рамках которой происходят изменения, и будут управлять локальными изменениями как частью распределенной транзакции.
Управление распределенными транзакциями осуществляется в соответствии с моделью X/Open DTP. Данная модель предусматривает, что если хранящая объекты система имеет свой собственный менеджер транзакций, например, СУБД, то управление транзакциями над этими объектами может быть передано ему. В этом случае менеджер транзакций соответствующего сервиса может не выполнять полезной работы сам, но через посредство менеджера транзакций подчиненной системы.
Вопросы надежности и долговечности транзакций могут решаться на уровне менеджера транзакций сервиса, если он осуществляет полноценное управление, с журналированием и т.п., или на уровне менеджера транзакций подчиненной системы в ином случае.
Резюме
Мы надеемся, что нам удалось хотя бы частично доказать техническую осуществимость задачи эффективного построения полноценного глобального пространства объектов. Изложенные здесь идеи были проверены на практике и легли в основу продукта EntryService ООО "Фьюжнсофт", который Вы можете получить здесь: http://www.fusionsoft-online.com/entryservice.php. С помощью данного продукта уже сейчас может быть построено пространство объектов, чем мы и занимаемся. Приглашаем присоединиться к решению этой задачи: info@fusionsoft-online.com.
Вернуться к оглавлению: Оглавление
Назад: Безопасность пространства объектов
