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

  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-серверу прописывается в модуле, который подключается на всех страницах, и разработчик просто вызывает необходимые функции.

Пример подключения к SOAP-серверу:

$client=newSoapClient(null,array('location'=>"http://is.iriit/soap/soap_is.php",

'uri' => "http://is.iriit/soap/soap_is.php",

'login' => "логин",

'password' => "пароль",

'encoding' => "WINDOWS-1251"));

Пример вызова SOAP-функции:

$massiv=$client->SpisokPred($user_id);

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


2006 © Захарова Анна (диплом)
Last modified: Thursday, 14 July 2011, 6:47 PM