Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Веб сервисы. WSDL





Web-сервисы. В самом общем виде понятие Web-сервиса можно определить как сервис (услугу) которая предоставляется через WWW с использованием языка XML и протокола HTTP.

Web-сервисы могут инкапсулировать как простейшие бизнес-функции типа «запрос-ответ», до полномасштабных взаимодействий бизнес-процессов. Службы могут создаваться заново или строиться на основе существующих приложений методом «обертывания».

Свойства Web-сервисов. Все Web-сервисы обладают имеют следующими свойствами:

· являются самодостаточными, т.е. с клиентской стороны не требуется никакого дополнительного программного обеспечения кроме языка программирования, поддерживающего работу с XML и HTTP, а на серверной стороне требуются только HTTP-сервер, поддерживающий работу с посланиями.

· являются самоописываемыми, поскольку метаданные, описывают сообщения передается вместе с сообщением и не требуется никаких внешних хранилищ метаданных;

· могут быть опубликованы, обнаружены и вызваны через Интернет причем для этого используют простые установившиеся стандарты, такие как HTTP и существующая сетевая инфраструктура;

· являются модульными, т. е. простые Web-сервисы могут объединяться в более сложные, причем это может быть сделано разными способами, либо при помощи механизма рабочих процессов, либо посредством прямого вызова Web-сервисов из других реализации Web-сервисов;

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

· открыты и основаны на стандартах, технической основой Web-сервисов являются XML и HTTP, значительная часть технологии Web-сервисов создана с использованием проектов с открытым исходным кодом;

· имеют свободные связи, по сравнению с другими, в частности, компонентными технологиями для Web-сервисов требуется более простой уровень координации, который позволяет осуществлять достаточно гибкую реконфигурацию для обеспечения интеграции нужных сервисов;

· являются динамическими, поскольку имеется возможность обнаруживать службы в процессе функционирования, при этом имеется возможность из распространения не влияя на работу клиентов, которые их используют;

· являются действенным средством интеграции унаследованных приложений.

WSDL используется для описания интерфейсов Web services. Средствами WSDL можно описать, где находится Web-сервис и каким образом к нему следует обращаться. WSDL описание позволяет создавать независимое от платформы и языка реализации описание Web-сервиса. Нетрудно заметить, что WSDL имеет много общего с IDL, используемым в RPC. WSDL описание представляет собой XML документ, структура которого показана на рис. 5.2.

<definitions>

<types> Что делается
<message>
<portType>
<binding> Как делается
<service> Где находится
<import>  
<documentation>  

</definitions>

 

Рис. 5.2. Структура XML документа

В качестве корневого элементы WSDL описания используется элемент <definitions>, в который вкладываются семь элементов, пят из которых являются основными, а два - вспомогательными.

В качестве основных выступают следующие элементы:

- <types>;

- <message>;

- <portType>;

- <binding>.

В качестве вспомогательных выступают элементы:

- <import>;

- <documentation>.

Каждый элемента имеет собственное имя, определяемое обязательным атрибутом name. Имена используются для ссылки на отдельные элементы.

Элемент <types>; присутствует, если требуется определить сложные типы с помощью языка XSD. В противном случае данный элемент отсутствует.

Элемент <message>; описывает каждое из SOAP посланий в терминах «запрос-ответ». В этот элемент вкладываются элементы <part>. При использовании процедурного стиля в каждый такой элемент описывается имя и тип одного аргумента запроса или возвращаемого значения. При использовании документного стиля элементы <part> могут описывать отдельную часть послания MIME-типа "multipart/related".

Элемент <portType>; описывает интерфейс Web-службы, который также называют пунктом назначения (endpoint) или портом (port), сервисов, называемых операциями. Отдельные операции описываются как вложенными элементы <operation>, которая описывает отдельный сервис. Имеется 4 вида сервисов. Два простых действия (получение послания и отправка ответа) и два комбинированных действия (отправка послания — получение ответа и получение послания — отправка ответа). Действия типа получение и отправка посланий описываются вложенными элементами <input> и <output>, а также сообщением об ошибке (элемент <fault>).

Элемент <serviceType>; содержит множество вложенных элементов <portType>. Один и тот же порт может быть связан с несколькими сервисами.

Элемент <binding>; описывает формат пересылки послания: протоколы и его тип. Каждый элемент <message> может быть связан с несколькими такими элементами<binding>, по одному для каждого способа пересылки.

Элемент <service> определяет место нахождения сервиса как один или несколько портов, каждый из которых описывается вложенным элементом <port>, содержащим адрес интерфейса Web-сервисы.

Кроме перечисленных выше основных элементов есть еще два вспомогательных элемента.

Элемент <import> включает файл с XSD схемой описания WSDL или другой WSDL-файл.

Элемент <documentation> представляет собой комментарий, который можно включить в любой элемент описания WSDL.

Принято говорить, что элементы <types>, <message> и <portType> определяют какие именно услуги предоставляет данный сервис.

Элементы <binding> определяет как реализована Web-служба, т.е. как к ней обращаться.

Элементы <service> определяет где располагается сервис.

Ниже в качестве примера приведен фрагмент WSDL описания.

 

<?xml version="1.0" encoding="UTF-8"?>

name="SynonymService"

targetNamespace="http://www.vocab.ru/Thesaurus.wsdl"

xmlns="http://www.w3.org/ns/wsdl"

........

<wsdl:definitions...

<wsdl:message name="getSynonymResponse">

<wsdl:part name="synonym" type="SOAP-ENC:string"/>

</wsdl:message>

<wsdl:message name="getSynonymRequest">

<wsdl:part name="word" type="SOAP-ENC:string"/>

</wsdl:message>

<wsdl:portType name="Synonyms">

<wsdl:operation name="getSynonym" parameterOrder="word">

<wsdl:input message="intf: getSynonymRequest"/>

<wsdl:output message="intf:getSynonymResponse"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="getSynonymSoapBinding" type="intf:Thesaurus">

<wsdlsoap:binding style="rpc"

transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="getSynonym">

<wsdlsoap:operation soapAction=""/>

<wsdl:input>

<wsdlsoap:body

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="urn:myDirectory" use="encoded"/>

</wsdl:input>

<wsdl:output>

<wsdlsoap:body

encodingStyle=

"http://schemas.xmlsoap.org/soap/encoding/"

namespace="urn:myDirectory" use="encoded"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="SynonymService">

<wsdl:port binding="intf: getSynonymSoapBinding" name="Thesaurus">

<wsdlsoap:address

location="http://localhost:8080/axis/services/Thesaurus"/>

</wsdl:port>

</wsdl:service>

<documentation> Thesaurus WSDL File</documentation>

</wsdl:definitions>

 

Предполагается, что данное описание находится в файле Thesaurus.wsdl.

Имя сервиса SynonymService определено в элементе service.

Далее определяются используемые пространства имен (часть определений пропущена).

В элементах <wsdl:message> описаны используемые типы SOAP посланий. Используется два типа сообщений, которые называются getSynonymRespons и getSynonymReques. Первое содержит поле synonym, а второе – поле word. Оба поля представляют собой строки символов.

Элемент <wsdl:portType> называется Synonyms и выполняет только одну операцию getSynonym, которая получает входную переменную word. Входное послание имеет имя getSynonymRequest, а выходное – getSynonymResponse.

Элемент <wsdl:binding"> называется getSynonymSoapBinding. В нем указывается, что сервис работает в режиме запрос-ответ (использует rpc – стиль), использует в качестве транспорта протокол HTTP, работает с SOAP посланиями и выполняет операцию getSynonym. Затем в терминах SOAP повторяется описание операции getSynonym.

В элементе <wsdl:service>, который называется SynonymService, указывается место нахождения сервиса.

Элемент <documentation> может содержать любые комментарии.

Поскольку в рассматриваемом примере не используются сложные типы, то элемент <types> отсутствует.

WSDL спецификация может быть получена автоматически из файла реализации Web services, например, из Java файла или из описания интерфейса. Имеется много разных систем поддержки работы с Web services. Одной из наиболее популярных является Apache eXtensible Interaction System (AXIS).

Можно выделить два альтернативных подхода к разработке Web сервисов: подход по принципу «сверху-вниз и подход «снизу-вверх».

В первом случае разработка начинается с разработки WSDL описание, которое используется для генерации скелетона и стаба, затем к ним добавляется бизнес логика.

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

Например, в рамках существующих инструментальных средств имеются утилиты для выполнения упомянутых выше преобразований [35, 36].

UDDI

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

Реестр UDDI (UDDI Business Registry) представляет собой распределенную базу данных и по принципу работы подобна системе DNS. Для пользователя Реестр UDDI доступен как Web сервис.

Спецификация UDDI была разработана в 2000 году фирмами IBM, Microsoft и Ariba. На момент написания данной книге последняя версия 3.х (http://uddi.org/pubs/uddi_v3.htm).

В начале 2000-х годов многие крупные компании организовали и содержали открытые (public) UDDI-реестры, где каждый желающий мог зарегистрировать собственный сервис и найти нужный сервис.

UDDI представляет собой документ в формате XML. UDDI имеет 3-х уровневую организацию.

На верхнем уровне UDDI реестр представляет собой справочник, работающий по принципу Белых страниц, которые содержат базовую информацию о бизнесе, включая название, описание и контактную информацию (телефон, факс, Web сайт и т.п.) и бизнес идентификатор.

На втором уровне UDDI реестр представляет собой Желтые страницы, в которых бизнес информация классифицируется по типу бизнеса, производимым продуктам. На третьем уровне UDDI реестр можно рассматривать как Зеленые страницы, где описаны способы доступа к сервисам.

Состав реестра UDDI. Реестр UDDI содержит четыре основные элемента и дополнительные элементы.

Основные элементы:

- бизнес сущности;

- бизнес сервисы;

- модель привязки;

- техническая модель сервиса.

Дополнительные элементы:

- утверждения;

- информация;

- подписка.

Элемент бизнес сущность <businessEntity>; содержит уникальный в пределах реестра ключ UUID (Unique Universal Identifier), название фирмы (вложенный элемент <name>), описание сферы деятельности организации, типы предоставляемых сервисов, контактная информация, ссылки URL. Небольшой организации обычно соответствует одна бизнес сущность, а большой организации, имеющей большое количество подразделений может соответствовать несколько бизнес сущностей.

Элементы бизнес сервисы <businessServices>; вкладываются в элемент бизнес сущность и описывает каждый из предоставляемых сервисов. В состав описания входит ключ UUID сервиса (serviceKey), имя сервиса (вложенный элемент <name>), описание и (или) ссылки на более подробную информацию. (Предоставляемые сервисы – это не обязательно Web-сервисы.)

Элементы модели привязки элемент <bindingTempiates>; вкладываются в элемент <businesService> и описывают конкретные способы работы с данным сервисом. Это могу быть либо прямые ссылки в форме URL, либо косвенными, например, в форме WSDL описания. Каждый элемент типа <bindingTempiate> имеет уникальный ключ UUID указателя содержит ссылку на соответствующий ему элемент <tModel>.

Элемент техническая модель сервиса <tModel> (technical Model) представляет собой подробное формальное описание каждой услуги. Данный элемент используется программным обеспечением и обычно оформляется как отдельный документ XML.

Кроме перечисленных выше, в UUID реестре имеются дополнительные элементы.

Элемент утверждение <publisherAssertion>; представляет собой описание отношений между фирмами. Примерами отношений могут служить "parent-child"), т.е. одна организация является подразделением другой. Утверждение типа "identity"означает, что речь идет об одной и той же организации.

Элемент информация <operationalInfo>; содержит дату создания и последней модификации записи в реестре, идентификатор узла реестра, идентификатор владельца информации.

Ниже приведено описание структуры UUID реестра.

 

<businessDetail>

<businessEntity businessKey=” [Уникальный идентификатор] ”>

Имена, описания, контакты,..

<businessServices>

<businessService serviceKey=” [ Уникальный идентификатор] ” businessKey=” [Уникальный идентификатор] ”>

Имена, описания,..

<bindingTemplates>

<bindingTemplate bindingKey=” [ Уникальный идентификатор] ” serviceKey=”

[Уникальный идентификатор] ”>

описания..

<accessPoint

URLType=” http ”> http://www... </accessPoint>

<tModelInstanceDetails>

<tModelInstanceInfo>

<tModelKey> [ Уникальный идентификатор] </tModelKey>

Descriptions,..

<instanceDetails>

Описания, URL,..

</instanceDetails>

</tModelInstanceInfo>

</tModelInstanceDetails>

</bindingTemplate>

...

</bindingTemplates>

<categoryBag>...<tModelKey>[ Уникальный идентификатор] </tModelKey>...

</categoryBag>

</businessService>

...

</businessServices>

<identifierBag>...<tModelKey> [Уникальный идентификатор] </tModelKey>...

</identifierBag>

<categoryBag>...<tModelKey> [Уникальный идентификатор] </tModelKey>...</categoryBag>

</businessEntity>

...

</businessDetail>

 

Программный интерфейс UDDI. Для работы с реестром UDDI пользователю предоставляется API.

Функции, входящие в состав UDDI API, модно разделить на четыре группы:

· функции, позволяющие регистрировать и изменять описания сервисов в UDDI реестре, которые называют save_xxx функции;

· функции для получения информации о сервисах, которые называют get_xxx функции;

· функции для поиска сервисов, которые называют find_xxx функции;

· функции для удаления сервисов, которые называют delete_xxx функции;

Под символами "ххх" имеется в виду тип объекта ("business", "service", "binding", "tModel").

С точки зрения пользователя, UDDI реестр – это Web-сервис, для обращения к которому ему следует направить SOAP послание, поэтому пользовательский интерфейс можно определить и в терминах SOAP посланий, которые можно направлять на вход реестра.

Для работы с UDDI реестром существует много библиотек классов и отдельных функций, написанных на различных языках. В средее Java программистов часто используется пакет классов UDDI4J (UDDI for Java), разработанный фирмой IBM, который доступен на сайте http://sourceforge.net/projects/uddi4j/. (На момент написания книги последней версией была версия 2.0.5 от 2006 года.)

В данном пакете все обращения к реестру UDDI идут через класс-посредник UDDIProxy, который преобразует все обращения в функции UDDI API. Методы этого класса называются так же, как и функции UDDI API: save_business (), find_service () и т.п. Они возвращают объекты классов, которые представляют собой SOAP-структуры [32, 33].








Дата добавления: 2015-08-29; просмотров: 2099. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия