XML веб сервисы. Протокол SOAP


Вообще сегодня есть стандартные протоколы обмена XML данными:

  • XML-RPC — вы передаете пакет и указываете, какой метод на сервере хотите вызвать.
  • REST — есть некие объекты на сервере. Каждый объект характеризуется каким-то идентификатором. У каждого элемента свой url. С любым элементов можно сделать: insert, delete, update, select. Вы просто посылаете нужный запрос на сервер (например, вставить такой-то элемент). Обмен клиент-сервер базируется либо на JSON, либо на XML.Именно на RPC базируется SOAP (сервис ориентированная архитектура, набор слабосвязанных сервисов, взаимодействующих друг с другом). Главное достоинство RPC — небольшое количество сетевых ресурсов (точек входа) и много задействованных методов. Несмотря на это достоинство, у RPC — это устаревший протокол, у которого ряд недостатков:
    • Нельзя проверить правильность XML-RPC сообщения. Старый протокол, создавался до того, как в XML были стандартизированы схемы (способы проверки данных). Т.е. сервер принимает запросы, он должен убедиться, что эти запросы для него, и что данные не противоречивы. В XML-RPC для этого типы данных декларируются, но это проверка типа данных, а согласованность данных не проверяется (что вы получили структуру со всеми нужными параметрами).
    • Нельзя создавать комбинированные сообщения.
    • Нельзя использовать пространство и время (появилось позже создания RPC).
    • Нельзя расширять сообщение, т.е. добавлять дополнительную информацию.

    Все эти недостатки были решены в XML Schema. Это промышленный стандарт описания XML документа. Т.е. это способ моделирования произвольных данных. XML схема может описывать модель (отношения между элементами и атрибутами, и их структура), типы данных (характеризует типы данных) и словарь (названия элементов и атрибутов).

    Исходя из всех недостатков XML-RPC создали протокол SOAP.

    SOAP

    SOAP (Simle Object Access Protocol) — протокол доступа к объекту (к точке входа). Сегодня это основной промышленный стандарт построения распределенных приложений.

    Он представляет собой расширения языка XML-RPC. Т.е. он построен по принципу: 1 точка входа и любые методы. Сам протокол в плане транспорта (как передать данные) дает широкий выбор: SMTP, FTP, HTTP, MSMQ.

    SOAP лежит в основе реализации XML веб-сервисов (XML веб служб). Недостаток SOAP — сложен в изучении.

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

    XML схема

    Задача схемы — описать структуру данных, т.е. что у нас есть. Все данные делятся на простые и сложные типы (скаляры и структуры). Простой тип (строка, число, boolean, дата) никогда внутри ничего содержать не будет. А структура (объект) может содержать свойства.

    Основные операции SOAP

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

    SOAP

    Структура SOAP сообщений:

    • SOAP Envelope (конверт) — сюда входит все сообщение. Состоит из заголовка и тела.
    • SOAP Header (заголовок) — дополнительная информация (авторизация, например).
    • SOAP Body (тело) — само сообщение.
    • SOAP Fault (ошибка) — способ передачи ошибки от сервера к клиенту.

    WSDL

    WSDL (Web Services Description Language) — язык описания веб служб. Применяется в SOAP. Это некий докуент, который описывает все: какие пространства имен использовались, какие схемы данных использовались, какие типы сообщений сервер ждет от клиента, какие конверты к какому методу принадлежат, какие методы вообще есть, на какой адрес отправлять и т.д. Собственно, WSDL и есть веб сервис. Достаточно клиенту изучить содержимое этого документа, он уже знает о сервере все.

    Любой сервер должен публиковать WSDL.

    WSDL состоит из блоков:

    • Определение самой службы, т.е. точки входа, указывается порт.
    • Формат методов. Происходит привязка точки входа к операциям, т.е. какие методы поддерживает. Указывается тип вызова, способ передачи. Внутри каждого метода происходит объяснение — в каком виде передаются данные — в виде SOAP.
    • Привязка методов к сообщению.
    • Описание самих сообщений.


Ваш комментарий

Ваш адрес email не будет опубликован.

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