SOAP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

SOAP — протокол обміну структурованими повідомленнями в розподілених обчислювальних системах, базується на форматі XML.

Спочатку SOAP призначався, в основному, для реалізації віддаленого виклику процедур (RPC), а назва була абревіатурою: Simple Object Access Protocol — простий протокол доступу до об'єктів. Зараз протокол використовується для обміну повідомленнями в форматі XML, а не тільки для виклику процедур. SOAP є розширенням мови XML-RPC.

SOAP може використовуватись з будь-яким протоколом прикладного рівня: SMTP, FTP, HTTP та інш. Проте, його взаємодія з кожним із цих протоколів має свої особливості, які потрібно відзначити окремо. Найчастіше SOAP використовується разом з HTTP.

SOAP є одним із стандартів, на яких ґрунтується технологія веб-сервісів.

Структура протоколу[ред.ред. код]

SOAP.svg

Повідомлення SOAP структурується так:

SOAP- конверт

SOAP-заголовок
Елемент заголовку 1
Елемент заголовку 2
Елемент заголовку N
Тіло SOAP
Елемент тіла 1
Елемент тіла 2
Елемент тіла N

Приклад SOAP POST повідомлення[ред.ред. код]

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299
 
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Header>
  </soap:Header>
  <soap:Body>
    <m:GetStockPrice xmlns:m="http://www.example.org/stock">
      <m:StockName>IBM</m:StockName>
    </m:GetStockPrice>
  </soap:Body>
</soap:Envelope>

Приклад[ред.ред. код]

Приклад SOAP-запиту на сервер інтернет-магазину:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetails xmlns="http://warehouse.example.com/ws">
       <productID>12345</productID>
     </getProductDetails>
   </soap:Body>
 </soap:Envelope>

Приклад відповіді:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <getProductDetailsResponse xmlns="http://warehouse.example.com/ws">
       <getProductDetailsResult>
         <productID>12345</productID>
         <productName>Стакан гранчатий</productName>
         <description>Стакан гранчатий. 200 мл.</description>
         <price>9.95</price>
         <inStock>true</inStock>
       </getProductDetailsResult>
     </getProductDetailsResponse>
   </soap:Body>
 </soap:Envelope>

Переваги[ред.ред. код]

  • SOAP є достатньо гнучким, що дозволяє використовувати різні транспортні протоколи. Стандартні реалізації використовують HTTP як транспортний протокол, однак також можливо використовувати JMS чи SMTP.
  • Оскільки, модель SOAP каналів(з’єднань) прекрасно працює в контексті моделі HTTP запитів-відповідей, то можливо легко встановлювати з’єднання на базі існуючих фаєрволів чи проксі-серверів без жодних модифікацій самого SOAP-протоколу.

Недоліки[ред.ред. код]

  • Використання SOAP для передавання повідомлень збільшує їхній обсяг і знижує швидкість обробки. В системах, де швидкість важлива, частіше використовується відсилання XML документів напряму через HTTP, де параметри запиту передаються як звичайні HTTP параметри.
  • Не зважаючи на те, що SOAP є стандартом, різні програми часто генерують повідомлення в несумісному форматі. Наприклад, запит згенерований Axis-клієнтом, не буде розпізнано сервером WebLogic.

Посилання[ред.ред. код]