Модели непротиворечивости, ориентированные на данные. Свободная непротиворечивость

Протокол SOAP, определение, назначение и структура основных элементов SOAP (конверт, заголовок, тело).

Simple Object Access Protocol (SOAP) — это протокол на базе языка XML, который определяет правила передачи сообщений по Internet между различными прикладными системами. В основном он используется для удаленного вызова процедур. В распределённых системах данный протокол используется для обеспечения взаимодействия клиент-сервер и регламентирует, как должен осуществляться вызов, передаваться параметры и возвращаемые значения. Связь между web-службами и их клиентами осуществляется посредством сообщений в формате XML. SOAP (простой протокол доступа к объектам) представляет собой протокол сообщений для выбора web-служб. Cостоит из двух основных частей — заголовка и тела документа. Причем все это упаковывается в некий "конверт", и в этом виде передается по протоколу HTTP.

Конверт определяется при помощи элемента Envelope. Это обязательный компонент сообщений SOAP. В нем могут (но не обязаны) быть размещены ссылки на используемые пространства имен. В том случае, если в конверте приложение или разработчик размещают дополнительные элементы, эти элементы должны быть описаны в одном из стандартных пространств имен.

Заголовок сообщения SOAP объявляется при помощи элемента Header. Данный компонент не является обязательным. Он используется в тех случаях, когда необходимо расширить стандартную функциональность SOAP-сообщения. В заголовке находятся элементы, которые будут подсказывать приложению, обрабатывающему SOAP-запрос, какие именно функции будут реализованы при помощи данного SOAP-сообщения. Заголовок SOAP-сообщения является прямым потомком конверта, т. е. на уровне тегов он просто вкладывается в теги с наименованием Envelope.

Тело SOAP-сообщения объявляется при помощи элемента Body. Этот компонент является обязательным. Так же, как и заголовок, он является прямым потомком конверта. Естественно, как тело, так и заголовок могут существовать в сообщении SOAP только в единственном экземпляре. В том случае, если у сообщения есть заголовок, тело сообщения должно объявляться сразу после заголовка, т. е. открывающий тег тела сообщения должен вплотную примыкать к закрывающему тегу заголовка сообщения.

 

33.Язык WSDL – назначение, структура и основные элементы WSDL.

 

WSDL – это формат XML-схем, определяющий расширенную структуру описания интерфейсов веб-сервисов. WSDL – сердце структуры веб-сервиса, общий способ представления передаваемых в сообщениях типов данных, указывающий действия, которые должны быть выполнены с данным сообщением и согласно которому сообщения привязываются к сетевым транспортам. WSDL предназначен для использования как в процедурно-ориентированных, так и в документно-ориентированных приложениях. WSDL состоит из трех элементов: определение типов данных, абстрактные операции и связывание сервисов. Каждый документ WSDL является (по определению) документом XML. Опишем вкратце структуру WSDL документа. Описывается в следующих терминах: типы, сообщения, типы портов, привязки, порты, сервисы. Типы - это понятия, в терминах которых описываются сообщения. Сообщения - это абстрактные представления передаваемых данных. Сообщения состоят из нескольких элементов, с каждым из которых связан некоторый тип данных в некоторой системе типов. Типы портов - это наборы абстрактных операций, производимых на входящими и исходящими сообщениями. Привязки определяют конкретные протокол и формат данных для операций, введенных конкретным типом порта. Порты вводят адреса для привязок, определяя тем самым точку входа для внешних каналов связи.Сервисы - это наборы взаимосвязанных портов.

 

Модели непротиворечивости, ориентированные на данные. Свободная непротиворечивость.

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

синхронизации, а не один. Свободная непротиворечивость {release consistency) предоставляет эти два типа. Операция захвата {acquire) используется для сообщения хранилищу данных о входе в критическую область, а операция освобождения {release) говорит о том, что критическая область была покинута. Эти операции могут быть реализованы одним из двух способов: во-первых, обычными операциями над специальными переменными; во-вторых, специальными операциями. В любом

случае программист отвечает за вставку в программу соответствующего дополнительного кода.