Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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-17; Прочитано: 454 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...