SOAP взаимодействие

Взаимодействие с веб-сервисом расширения "Бром" происходит по стандартизированному протоколу SOAP. Данный протокол позволяет совершать удаленный вызов функций с передачей праметров и получением результата вызова. Для передачи данных в прямом и обратном направлении используются XML-сообщения определенной заранее описанной структуры. Отправка сообщений происходит по HTTP протоколу.

Ниже представлен пример XML-сообщений запроса и ответа:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:brom="https://brom.itworks.group">
   <soap:Header/>
   <soap:Body>
      <brom:GetObjectList>
         <brom:type>Перечисление</brom:type>
         <brom:name>СтавкиНДС</brom:name>
         <brom:settings />
      </brom:GetObjectList>
   </soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
   <soap:Body>
      <m:GetObjectListResponse xmlns:m="https://brom.itworks.group">
         <m:return xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <m:Item xsi:type="m:ValueEnumRef" Value="НДС0" Presentation="0%" Type="Перечисление.СтавкиНДС"/>
            <m:Item xsi:type="m:ValueEnumRef" Value="НДС10" Presentation="10%" Type="Перечисление.СтавкиНДС"/>
            <m:Item xsi:type="m:ValueEnumRef" Value="НДС18_118" Presentation="18/118" Type="Перечисление.СтавкиНДС"/>
            <m:Item xsi:type="m:ValueEnumRef" Value="БезНДС" Presentation="Без НДС" Type="Перечисление.СтавкиНДС"/>
            <m:Item xsi:type="m:ValueEnumRef" Value="НДС18" Presentation="18%" Type="Перечисление.СтавкиНДС"/>
            <m:Item xsi:type="m:ValueEnumRef" Value="НДС10_110" Presentation="10/110" Type="Перечисление.СтавкиНДС"/>
         </m:return>
      </m:GetObjectListResponse>
   </soap:Body>
</soap:Envelope>

Чем хорош SOAP?

SOAP протокол обладает рядом преимуществ, а именно:

Стандартизированный протокол

SOAP является стандартизированным протокол обмена данными. Это значит, что структура исходящих и входящих сообщений заранее задана, хорошо документирована и проста в использовании. Если разработчик имеет представление о том, что такое HTTP-запрос, то он сможет без труда сформировать и отправить XML-сообщение собственными силами, без использования какого-либо специализированного программного обеспечения.

Структура данных описывается в XML

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

Строгая типизация данных

Типы данных (типы объектов) передваемые между удаленными приложениями строго описаны в XML-схеме, которая является частью WSDL-файла (описания сервиса). Даже если разработчик не знаком с правилами описания XML-схемы, программный компонент самомстоятельно может сформировать правильный XML-код, а также проверить его корректность.

Объектное взаимодействие

Сериализация и десериализация объектов в XML-сущности заложена в основу самого протокола. Это значит, что при использовании программных компонентов более высокого уровня, разработчик может оперировать готовыми функциональными объектами языка, а не XML-сообщениями.

Повсеместная распространенность

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

SOAP сервисы поддерживают описание в WSDL

Сервисы на базе протокола SOAP требуют наличия файла с описанием сервиса на языке WSDL. Это значит, что при работе с веб-сервисом на базе SOAP разработчику не придется искать документацию, в которой были бы описаны типы данных и методы сервиса. Эта документация является неотъемлимой частью самого протокола и присутствует в сервисе по умолчанию.

Как передаются данные?

В расширении "Бром" реализованы собственные механизмы сериализации данных. Благодаря этому в обоих направлениях возможна передача как данных примитивных типов (строки, числа, даты и пр..), так и сложных структурированных данных (массивы, таблицы, деревья, ссылки и пр..).

В XML-схеме сервиса описаны типы данных, которые соответствую встроенным типам данных 1С:Предприятие. Все типы данных XML-схемы, предназначеные для двусторонней передачи, являются производными от абстрактоного типа "brom:ValueBase". Полный список сериализуемых типов представлен в разделе "Сериализуемые типы данных".

Обозначения

Далее в документации для обозначения типов данных из разных пространств имен испольуется сокращенная запись. Пространства имен указываются в соответвии с правилами обозначения XML-схемы в виде префиксов. Для пространств имен использованы следующие обозначения:

xs = "http://www.w3.org/2001/XMLSchema" (пространство имен базовых типов)
brom = "https://brom.itworks.group" (пространство имен сервиса "Бром")

Например, запись "brom:ValueArray" означает тип данных "ValueArray" из пространства имен "https://brom.itworks.group".