Механизм взаимодействия клиента и сервера

1. Клиентское приложение создает экземпляр объекта SOAPClient

2. SOAPClient читает файлы описания методов веб-сервиса (WSDL и Web Services Meta Language - WSML). Эти файлы могут храниться и на клиенте.

3. Клиентское приложение, используя возможности позднего связывания методов объекта SOAPClient, вызывает метод сервиса. SOAPClient формирует пакет запроса (SOAP Envelope) и отправляет на сервер. Возможно использование любого транспортного протокола, но, как правило, используется HTTP.

4. Пакет принимает серверное приложение Listener (может представлять собой ISAPI приложение или ASP страницу), создает объект SOAPServer и передает ему пакет запроса

5. SOAPServer читает описание веб-сервиса, загружает описание и пакет запроса в XML DOM деревья

6. SOAPServer вызывает метод объекта/приложения, реализующего сервис

7. Результаты выполнения метода или описание ошибки конвертируются объектом SOAPServer в пакет ответа и отправляются клиенту

8. Объект SOAPClient проводит разбор принятого пакета и возвращает клиентскому приложению результаты работы сервиса или описание возникшей ошибки.

WSDL файл это документ в формате XML, описывающий методы, предоставляемые веб-сервисом. Также параметры методов, их типы, названия и местонахождение Listener`а сервиса. SOAP Toolkit визард автоматически генерирует этот документ.

Фрагмент WSDL файла:

..<message name=" SOAPClass.SubtractNumbers"> <part name="NumberOne" type="xsd:double" /> <part name="NumberTwo" type="xsd:double" /> </message> <message name=" SOAPClass.SubtractNumbersResponse"> <part name="Result" type="xsd:double" /> </message> <message name=" SOAPClass.AddNumbers"> <part name="NumberOne" type="xsd:double" /> <part name="NumberTwo" type="xsd:double" /> </message> <message name=" SOAPClass.AddNumbersResponse"> <part name="Result" type="xsd:double" /> </message>...

SOAP Envelope (Пакет) - XML документ, который содержит в себе запрос/ответ на выполнение метода. Удобнее всего рассматривать его как почтовый конверт, в который вложена информация.

Структура SOAP пакета

Тэг Envelope должен быть корневым элементом пакета. Элемент Header не обязателен, а Body должен присутствовать и быть прямым потомком элемента Envelope. В случае ошибки выполнения метода сервер формирует пакет, содержащий в тэге Body элемент Fault, который содержит подробное описание ошибки.

Если вы пользуетесь высокоуровневыми интерфейсами SOAPClient, SOAPServer, то вам не придется вдаваться в тонкости формата пакета, но, при желании, можно воспользоваться низкоуровневыми интерфейсами или же вообще создать пакет «руками».

Объектная модель SOAP Toolkit дает возможность работать с объектами низкоуровневого API:

SoapConnector - Обеспечивает работу с транспортным протоколом для обмена SOAP пакетами

SoapConnectorFactory - Обеспечивает метод создания коннектора для транспортного протокола, указанного в WSDL файле (тэг <soap:binding>)

SoapReader - Читает SOAP сообщения и строит XML DOM деревья

SoapSerializer - Содержит методы создания SOAP сообщения

IsoapTypeMapper, SoapTypeMapperFactory - Интерфейсы, позволяющие работать со сложными типами данных

Используя объекты высокоуровневого API можно передавать данные только простых типов (int, srting, float …), но спецификация SOAP 1.1 допускает работу с более сложными типами данных, например с массивами, структурами, списками и их комбинациями. Для работы с такими типами приходится использовать интерфейсы IsoapTypeMapper и SoapTypeMapperFactory.

 


Лекция








Дата добавления: 2015-09-14; просмотров: 959;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.