У чому полягає сучасне значення SOAP


51

Востаннє я стикався з послугою, що базується на SOAP, під час мого стажування у фінансовій фірмі у 2013 році. Це був час, коли я розпочав свою кар’єру в галузі ІТ. Я пам’ятаю, що в одному з моїх інженерних курсів був якийсь навчальний матеріал про SOAP. Крім цього, я не використовував SOAP багато протягом своєї кар'єри.

Я запитую це, оскільки питання "Різниця між SOAP та REST" з'явився в одному з моїх останніх інтерв'ю. З того, що я знаю (і що я знайшов в Google) SOAP - це протокол з тісним зв'язком між клієнтом і сервером для обміну інформацією, який тісно пов'язаний з бізнес-логікою. Тоді як REST - це більш гнучка архітектура без громадянства для передачі даних.

Чи може хтось, будь ласка, виправити мене, якщо я помиляюся щодо цієї різниці між SOAP та REST? Крім того, у чому полягає сучасне значення SOAP? Чи все ще люди розробляють нові API на основі SOAP, або це в основному спадщина?



2
дивіться також: Майбутнє SOAP, з REST
gnat

14
@gnat: Що того, що варто, відповіді в обох цих питаннях жахливі.
Роберт Харві

7
Ви коли-небудь насправді бачили послугу REST? Все, що я бачу, - це "веб-сервіси, які нарешті дізналися, що означають HTTP дієслова". Чому ми раптом викликаємо HTTP REST?
Луань

8
@Luaan: У цьому немає нічого раптового; люди зловживають терміном "REST" протягом багатьох років.
Гонки легкості з Монікою

Відповіді:


58

REST - це справді архітектурний стиль. SOAP - протокол даних. Відмінність важлива; ви не можете їх порівняти безпосередньо.

Основна мета REST - представляти ресурси в Інтернеті та забезпечувати механізми їх виявлення. На відміну від цього, SOAP використовується для передачі структурованих даних між комп'ютерами, і це все, що він насправді робить.

Зауважте, що вам фактично не потрібно REST для створення відносин клієнт / сервер між двома комп'ютерами в Інтернеті. Все, що вам потрібно, це механізм, який передає JSON або XML, і вам це навіть не потрібно, якщо ви готові бути несумісними з усіма іншими.

Тим не менш, SOAP не прихильнився до нових, відкритих для API інтерфейсів, хоча він все ще часто використовується для B2B-додатків, оскільки ви можете визначити "контракт з даними" з ним. Веб-сервіси JSON мають перевагу досить легкої та гнучкої, а оскільки Javascript розпізнає JSON на самому собі, це природний вибір для браузерів.

Але насправді ніхто з цього не має нічого спільного з REST.

Подальше читання
Чи REST кращий за SOAP? (хороша стаття, навіть якщо вона неправильно називає REST протоколом).
Модель зрілості Річардсона


3
Я б сказав, що вбивчою особливістю веб-служб JSON є саме той факт, що браузери мають слабку підтримку XML та SOAP, хоча вони мають (майже) вбудовану підтримку JSON. SOAP має багато для цього, але якщо ви не можете робити запити AJAX проти послуги SOAP, вона мертва. Javascript / JSON став найменшим спільним знаменником в Інтернеті, так що вам потрібно величезна перевага , щоб не використовувати його, і SOAP НЕ що набагато краще.
Луань

3
@Luaan Я б не сказав, що браузери мають слабку підтримку XML. Насправді, важко отримати щось краще, ніж робити XML HttpRequest та отримати доступ до атрибута, який має проаналізований DOM. Це просто те, що якщо ти хочеш типову структуру даних, а не документ, JSON просто підходить, будь то в браузері чи в будь-якому іншому середовищі.
Андре Парамес

4
Все, що вам потрібно, це механізм, який передає JSON або XML, і вам це навіть не потрібно, якщо ви готові бути несумісними з усіма іншими. -1: Якщо ви хочете підключити клієнт і сервер, вам просто потрібен довільний протокол, який обидві сторони розуміють, що не має нічого спільного з використанням xml, JSON або сумісності з усіма іншими. Навіть використання json або xml не гарантує, що ваша сумісність з усіма або навіть з кимось. Json та xml - це лише формати даних, нічого більше.
Пол Василевський

6
@PaulWasilewski: Так, це я сказав. Не зациклюйтеся на словах. Є причина, що всі використовують JSON; це стандарт. Використання його гарантує, що ви використовуєте те, що впізнається для інших.
Роберт Харві

3
@RobertHarvey, ні, це не те, що ти написав, можливо, ти це мав на увазі. JSON є стандартним, і що? CSV, Protcol Buffers, BSON є стандартизованим, як і багато інших. Тож причина, чому всі користуються JSON, є безліч. І є навіть такі, хто використовує JSON, тому що всі користуються JSON;)
Павло Василевський

29

REST набагато обмеженіший, ніж SOAP, в чому його сила і причина його популярності.

У SOAP набір дозволених операцій, а набір дозволених типів даних по суті є безмежним. SOAP - це протокол віддаленої процедури, який ви використовуєте для викриття локальних API по всій мережі, не втрачаючи вірності. Це зробило SOAP популярним у корпоративних середовищах, коли складні транзакційні системи потребували взаємодії через мережу, не втрачаючи при цьому вірності. Це багатство можливостей також є падінням SOAP, тому що це робить SOAP API настільки громіздким для розуміння та використання, що для того, щоб мати сенс для речей, знадобилося автоматизоване інструментарій у вигляді клієнтів WSDL та SOAP. Тим більше, що розкрити повне багатство базової системи непривабливо у відкритих для API інтерфейсах, де ви хочете надати абстракції, які дозволять еволюціонувати базовій системі без необхідності розбивати чи версію свого API.

REST + JSON завоював популярність саме завдяки своїй простоті. Він визначає обмежений набір операцій з обмеженим набором типів даних, що вимагає від дизайнера API ретельного проектування абстракцій, що вміщуються всередині цього обмеженого словника, і реально продумувати відображення ділового домену на ресурси REST. API REST простий для розуміння та простий у використанні без спеціальних інструментів. Для відкритого для API інтерфейсу, де користувачі API можуть володіти всіма рівнями майстерності та знань, саме цього ви хочете, саме тому всі API, які ви бачите в Інтернеті, перейшли на REST. SOAP передається корпоративним ситуаціям, коли все ще є бажання та необхідність ділитися складними API між системами. Однак,

По суті, люди зрозуміли, що набір обмежень, які ви повинні застосувати до свого дизайну API, щоб зробити API простим і абстрактним, щоб він був легкодоступним і простим у використанні, - це саме той набір обмежень, який запроваджує REST, який ефективно нейтралізує SOAP вигоди, залишаючи вас лише з його недоліків. Ви можете створити спрощений API з SOAP, але він ніколи не буде таким простим у використанні, як REST, тому на практиці кожен просто обирає REST.


4
Старий добрий статичний та динамічний набір дебатів, так: D Охайна і жорстка проти хакі і проста, війна, яка ніколи не закінчується.
Луань

@Luaan ... і динамічний завжди виграє за обмін даними. youtube.com/watch?v=ROor6_NGIWU
Джаред Сміт

6
@JaredSmith Я не погоджуюся. Слід дотримуватися контрактів, щоб обидві кінцеві точки правильно відображали дані, якщо ви можете це зробити через публікацію метаданих замість сторінок документації, схильних до помилок, чому б вам не так?
drake7707

1
Практичний REST - це протокол; Теза та релігія - це «архітектурний стиль». Ця відповідь правильно порівнює практичний відпочинок з практичним милом.
bmargulies

1
У вашій відповіді вже було показано, що ви не розумієте REST, і ви коментуєте це.
Павло Василевський

5

Ви не можете порівнювати REST і SOAP. REST - це архітектурний стиль, тоді як SOAP - протокол.

На жаль, REST став розмовно-розмовним синонімом служби RESTful HTTP, що означає реалізацію архітектури стилю REST з протоколом HTTP як (додаток) протоколу.

REST заснований на наступних принципах (обмеження та елементи) (у дужках реалізація в RESTful HTTP) [1] .

  • Без громадянства (HTTP - протокол без громадянства)
  • Ресурс (ідентифікований URI)
  • Уніфікований інтерфейс (методи HTTP)
  • Представництво (MIME-TYPE)
  • HATEOS (гіперпосилання)
  • Кеш (HTTP кеш)

З іншого боку, багато людей мають на увазі, кажучи SOAP веб-службою на основі WSDL та SOAP, які є частиною архітектури веб-служб W3C [2] .

  • SOAP використовується як протокол для обміну інформацією (в основному назва методу, параметри, значення повернення, типи даних, ...).
  • WSDL мова визначення інтерфейсу для опису веб-служби.

У чому полягає сучасне значення SOAP *?

SOAP - стандарт W3C і використовується як формат обміну інформацією у веб-службах W3C. Ці веб-сервіси були - особливо під час розкручування SOA (архітектури, орієнтовані на сервіс) близько 2008 року (+ - 3 роки) - і (на жаль) досі застосовуються здебільшого у корпоративних додатках.

Це має кілька причин. Тоді RESTful HTTP був невідомий, і його неправильно зрозуміли. На жаль, досі невірно зрозуміти інші відповіді

„[...] REST значно обмежений, ніж SOAP [...]."

„Основна мета REST - представляти ресурси в Інтернеті [...].“

Крім того, SOAP (і WSDL) є частиною стеку протоколу веб-служб W3C, який забезпечує ще більше стандартів для впровадження веб-сервісу.

Чи все ще люди розробляють нові API на основі SOAP, або це в основному спадщина?

Так, так, все ще є і в майбутніх системах там, які використовують SOAP (принаймні, у корпоративних системах, переважно за дверима). Але більшість намагається сьогодні зробити якийсь "РЕЗЕТ".

Чи може хтось, будь ласка, виправити мене, якщо я помиляюся щодо цієї різниці між SOAP та REST?

Скажімо, що REST - це більш гнучка архітектура без громадянства для передачі даних - це не гарне пояснення. Простіше кажучи, REST - це стиль архітектури з конкретними обмеженнями та елементами. Тоді як SOAP - протокол обміну інформацією.

Як я вже писав, ви не можете їх порівняти. Але ви можете порівняти веб-сервіс RESTful HTTP з веб-сервісом SOAP / WSDL.


"Але ви можете порівняти веб-сервіс RESTful HTTP з веб-сервісом SOAP / WSDL." Але це запитує ОП. Хтось ще відповів на це?
RoboJ1M
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.