Стандарт WS-Coordination (координация Web-служб) определяет метод передачи уникальных идентификаторов сетевым службам, взаимодействующим между собой. В частности, при этом определяется координационный контекст и то, как он включается в заголовки сообщений SOAP. С помощью интерфейса регистрации портов определяется метод передачи контроллерам разговоров сведений о портах участников разговоров. С помощью интерфейса активации определяется метод передачи контроллерам разговоров сведений об их ролях в разговоре. Взаимодействие между координаторами и участниками разговоров может осуществляться централизованно и распределенно.
Координационный протокол – это набор правил управления разговорами между координатором и участниками. Координационный тип – это набор связанных друг с другом координационных протоколов. Координационный тип атомарных транзакций может включать в себя группу из протокола 2РС и протокола уведомления, который выполняется между участниками, желающими получить информацию о результате действия протокола 2РС. Координационный контекст – это структура данных, используемая для отметки сообщений, относящихся к одному разговору.
При активации участник требует от координатора создать новый координационный контекст. Новые контексты создаются всякий раз, когда участник создает новый экземпляр координационного типа (разговор). Участник регистрируется у координатора как участник координационного протокола, после чего координатор и участники обмениваются сообщениями, специфичными для данного прикладного протокола. Взаимодействия, проводимые для активации и регистрации, не зависят от типа координации (они «горизонтальны»).
Для активации определяются два типа портов: порт активации координатора и порт активации участника. Через порты таких типов службы просят своих координаторов создавать новые координационные контексты, а те возвращают службам ссылки на созданный контекст. Во время регистрации все участники, желающие участвовать в протоколе, должны зарегистрироваться у своих координаторов. Для регистрации служба посылает сообщение на соответствующий порт координатора, указывая имя протокола и ссылку на свой интерфейс, по которому будет доступен регистрируемый протокол. В ответ координатор возвращает ссылку на свой интерфейс этого же протокола (например, 2РС). После проведения активации и регистрации координатору известно, кто будет принимать участие в координации, а также порты, на которые надо посылать сообщения. О частных протоколах делается предположение, что все они имеют парный характер, то есть для каждого из них определен тип порта участника и тип порта координатора.
Отличие децентрализованной координации от централизованной заключается в том, что участники могут регистрироваться у разных координаторов (каждый из них создает свой контекст), а координаторы должны регистрироваться друг у друга (один из них объявляет себя координатором всего взаимодействия, а другие участвуют в качестве посредников). Таким образом могут строиться цепочки произвольной сложности. В соответствии со стандартом WS-Coordination координаторы могут транслировать сообщения одного протокола, получаемые от их участников, в сообщения другого протокола, передаваемые другому координатору. Это требует реализации зависящих от конкретных протоколов компонентов, выполняющих активацию и регистрацию.
3.7. Транзакции в сетевых службах
Сохранение базовых свойств транзакций при их выполнении сетевыми службами невозможно. Для сетевых служб не существует определений терминов «ресурс», «блокировка», «подтверждение» и «откат». Работа с сетевыми службами приводит к ослаблению строгости свойств транзакций и переходу к компенсационным механизмам. Если транзакцию надо отменить, служба выполнит компенсационную операцию и семантически отменит результаты транзакции.
Do'stlaringiz bilan baham: |