SOAP vs REST (відмінності)


1240

Я читав статті про відмінності між SOAP та REST як протоколом зв'язку веб-служб, але вважаю, що найбільші переваги для REST над SOAP:

  1. REST є більш динамічним, не потрібно створювати та оновлювати UDDI (Універсальний опис, відкриття та інтеграція).

  2. REST не обмежується лише форматом XML. RESTful веб-сервіси можуть надсилати звичайний текст / JSON / XML.

Але SOAP більш стандартизований (наприклад: безпека).

Отже, я правильно в цих пунктах?


181
Існує аналогія листів, яка мені дуже сподобалась щодо SOAP vs REST, з SOAP ви використовуєте конверт, з REST - це листівка , тому очевидно, що SOAP має додаткові накладні витрати: більша пропускна здатність (більше паперу), додаткова робота для обох сторін ( загортання та розмотування). Але це не означає, що REST не настільки безпечний, як SOAP, оскільки ви можете використовувати HTTPS (подумайте про це як про заміну поштового
чоловіка




4
Відповідно до моделі зрілості Річардсона, яка розбиває основні елементи підходу REST на три етапи, SOAP - це рівень 0 REST.
Сампада

Відповіді:


1754

На жаль, навколо REST існує багато дезінформації та помилок. Не тільки ваше запитання та відповідь від @cmd відображають це, але більшість запитань та відповідей, пов'язаних із темою, на стек переповнення.

SOAP і REST неможливо порівняти безпосередньо, оскільки перший - це протокол (або, принаймні, намагається бути), а другий - архітектурний стиль. Це, мабуть, одне з джерел плутанини навколо нього, оскільки люди, як правило, називають REST будь-яким HTTP API, який не є SOAP.

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

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

Я думаю, що це найважливіші моменти, щоб зрозуміти, що таке REST і чим він відрізняється від SOAP:

  • REST не залежить від протоколу. Він не пов'язаний з HTTP. Приблизно так, як ви можете переходити по ftp-посилання на веб-сайті, програма REST може використовувати будь-який протокол, для якого існує стандартизована схема URI.

  • REST не є відображенням CRUD на HTTP-методах. Прочитайте цю відповідь, щоб отримати детальне пояснення щодо цього.

  • REST настільки ж стандартизований, як і деталі, які ви використовуєте. Безпека та автентифікація в HTTP стандартизовані, тому саме цим ви користуєтесь, коли робите REST через HTTP.

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

  • REST - це архітектурний стиль самого Інтернету. Коли ви входите в переповнення стека, ви знаєте, що таке користувач, запитання та відповідь, ви знаєте типи медіа, і веб-сайт надає вам посилання на них. API REST повинен робити те саме. Якби ми створили Інтернет так, як люди думають, що REST слід робити, замість того, щоб мати домашню сторінку із посиланнями на запитання та відповіді, ми мали б статичну документацію, яка пояснює, що для перегляду питання потрібно взяти URI stackoverflow.com/questions/<id>, замініть ідентифікатор на Question.id та вставте його у свій браузер. Це нісенітниця, але саме так багато людей думають, що REST є.

Останній пункт не може бути наголошений достатньо. Якщо ваші клієнти будують URI з шаблонів у документації та не отримують посилань у представленнях ресурсів, це не REST. Рой Філдінг, автор програми REST, дав зрозуміти в цій публікації в блозі: API REST має керуватися гіпертекстом .

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

Нарешті, REST не для всіх, і доказом цього є те, як більшість людей дуже добре вирішують свої проблеми за допомогою API HTTP, який вони помилково назвали REST, і ніколи не ризикують за цим. Іноді REST важко зробити, особливо на початку, але це платить з часом легшою еволюцією на стороні сервера та стійкістю клієнта до змін. Якщо вам потрібно щось швидко і легко зробити, не переймайтеся тим, як правильно вибирати REST. Це, мабуть, не те, що ви шукаєте. Якщо вам потрібно щось, що вам доведеться залишатися в Інтернеті роками або навіть десятиліттями, тоді REST - це для вас.


8
Або один - це добре. Питання полягає в тому, як користувачі отримують URL-адреси, а не як вони ними користуються. Вони повинні отримати URL-адресу пошуку за посиланням у якомусь іншому документі, а не з документації. Документація може пояснити, як користуватися пошуковим ресурсом.
Педро Вернек

2
@CristiPotlog Я ніколи не говорив, що SOAP залежить від конкретного протоколу, я просто підкреслюю, як REST не є. Друге надіслане вами посилання говорить, що для REST потрібен HTTP, що є неправильним.
Педро Вернек

4
Повторимо це ще раз: HATEOAS - це обмеження, якщо ви хочете зателефонувати на свій API Restful!
Орестіс

3
@SachinKainth Там в відповідь на що тут . Ви можете зіставити CRUD-операційні підходи до методів HTTP, але це не REST, оскільки це не передбачена семантика цих методів, як це зафіксовано в RFC.
Педро Вернек

3
Останні 4 рядки є дорогоцінним каменем і повинні бути повністю зрозумілі людині в процесі розвитку. Чистий відпочинок займає багато часу, але приносить винагороду в більш тривалий час. Тож краще для середніх чи великих розмірів проектів. Не добре для прототипування та невеликих проектів.
Раджан Чаухан

287

RESTпроти SOAPце НЕ правильне питання , щоб запитати.

REST, В відміну від SOAPце НЕ протокол.

RESTє архітектурним стилем і дизайном для мережевих програмних архітектур.

RESTПоняття називають ресурсами. Представлення ресурсу повинно бути без громадянства. Він представлений через певний тип носія. Деякі приклади типів носіїв включають в себе XML, JSONі RDF. Ресурсами маніпулюють компоненти. Компоненти запитують та маніпулюють ресурсами через стандартний єдиний інтерфейс. У разі HTTP, цей інтерфейс складається з стандартної HTTP опса наприклад GET, PUT, POST, DELETE.

@ Питання Абдулазіза робить висвітлити той факт , що RESTі HTTPчасто використовуються в тандемі. В першу чергу це пов'язано з простотою HTTP та його дуже природним відображенням на принципах RESTful.

Основні принципи REST

Зв'язок клієнт-сервер

Клієнт-серверні архітектури мають дуже чітке розділення проблем. Усі програми, побудовані в стилі RESTful, також повинні бути принципово клієнт-сервером.

Без громадянства

Кожен запит клієнта до сервера вимагає повного представлення його стану. Сервер повинен бути в змозі повністю зрозуміти запит клієнта без використання будь-якого контексту сервера або стану сеансу сервера. Звідси випливає, що весь стан повинен зберігатися у клієнта.

Кешований

Обмеження кеш-пам'яті можуть використовуватися, таким чином, дозволяючи дані відповіді бути позначені як кешовані або не кешовані. Будь-які дані, позначені як кешовані, можуть бути повторно використані як відповідь на той же наступний запит.

Уніфікований інтерфейс

Усі компоненти повинні взаємодіяти через єдиний єдиний інтерфейс. Оскільки взаємодія всіх компонентів відбувається через цей інтерфейс, взаємодія з різними службами дуже проста. Інтерфейс такий же! Це також означає, що зміни в реалізації можуть бути здійснені поодиноко. Такі зміни не вплинуть на взаємодію основних компонентів, оскільки єдиний інтерфейс завжди не змінюється. Одним недоліком є ​​те, що ви застрягли в інтерфейсі. Якщо оптимізація може бути надана певній службі шляхом зміни інтерфейсу, вам не пощастило, оскільки REST забороняє це. З іншого боку, REST оптимізовано для Інтернету, отже, неймовірна популярність REST через HTTP!

Вищезазначені поняття представляють визначальні характеристики REST та відрізняють архітектуру REST від інших архітектур, таких як веб-сервіси. Корисно зауважити, що служба REST - це веб-служба, але веб-служба не обов'язково є послугою REST.

Дивіться цю публікацію в блозі про принципи дизайну REST для отримання більш детальної інформації про REST та вищезазначені кулі.

EDIT: оновлення вмісту на основі коментарів


7
REST не має заздалегідь заданого набору операцій, які є операціями CRUD. Спізне відображення методів HTTP для операцій CRUD є однією з найпоширеніших помилок навколо REST. Методи HTTP мають дуже чітко визначені форми поведінки, які не мають нічого спільного з CRUD, і REST не поєднується з HTTP. Ви можете мати API REST через ftp, окрім RETR та STOR, наприклад.
Педро Вернек

10
Крім того, що ви маєте на увазі під "REST-послугами безсилими"? Наскільки я знаю, у вас є деякі методи HTTP, які за замовчуванням є ідентичними, і якщо певна операція у вашому сервісі потребує ідентифікації, ви повинні їх використовувати, але не має сенсу говорити, що послуга є самодіяльною. У сервісі можуть бути ресурси з діями, які можуть бути здійснені безвідмовно або без ідентичності.
Педро Вернек

2
@cmd: видаліть четверту точку - "RESTful архітектура може використовувати HTTP або SOAP як базовий протокол зв'язку". це дезінформація, яку ви передаєте.
Bruce_Wayne

237

SOAP ( Простий протокол доступу до об’єктів ) і REST ( передача стану представлення ) - прекрасні на своєму шляху. Тож я їх не порівнюю. Натомість я намагаюся зобразити зображення, коли я вважав за краще використовувати REST та коли SOAP.

Що таке корисне навантаження?

Коли дані надсилаються через Інтернет, кожна передана одиниця включає як інформацію заголовка, так і фактичні дані, що надсилаються. Заголовок ідентифікує джерело та призначення пакету, а фактичні дані називають корисним навантаженням . Загалом корисна навантаження - це дані, які передаються від імені програми, та дані, отримані системою призначення.

Зараз, наприклад, я маю надіслати Telegram, і всі ми знаємо, що вартість телеграми буде залежати від деяких слів.

Тож скажіть мені серед наведених нижче цих двох повідомлень, яке з них дешевше надіслати?

<name>Arin</name>

або

"name": "Arin"

Я знаю, що ваша відповідь буде другою, хоча обидва, що представляють одне і те ж повідомлення, друге, дешевше щодо вартості.

Тому я намагаюся сказати, що надсилання даних по мережі у форматі JSON дешевше, ніж надсилання даних у форматі XML щодо корисної навантаження .

Ось перша перевага або переваги REST над SOAP . SOAP підтримує лише XML, але REST підтримує різний формат, наприклад текст, JSON, XML тощо.

Тепер SOAP підтримує єдиний XML, але він також має свої переваги.

Дійсно! Як?

SOAP покладається на XML трьома способами Envelope - який визначає, що є в повідомленні, і як його обробити.

Набір правил кодування для типів даних і нарешті макет процедури зібрав виклики та відповіді.

Цей конверт надсилається через транспорт (HTTP / HTTPS), і виконується RPC (віддалений виклик процедури), і конверт повертається з інформацією в документі, відформатованому XML.

Важливим моментом є те, що однією з переваг SOAP є використання «загального» транспорту, але REST використовує HTTP / HTTPS . SOAP може використовувати майже будь-який транспорт для надсилання запиту, але REST не може. Отже, тут ми отримали перевагу використання SOAP.

Як я вже згадував у вищевказаному пункті "REST використовує HTTP / HTTPS" , тож заглибимось у ці слова.

Коли ми говоримо про REST через HTTP, всі заходи безпеки, що застосовуються HTTP, успадковуються, і це відомо як безпека рівня транспорту, і він захищає повідомлення лише тоді, коли він знаходиться всередині проводу, але як тільки ви доставили його з іншого боку, ви не знаєте скільки етапів доведеться пройти, перш ніж досягти реальної точки, де дані будуть оброблятися. І звичайно, всі ці етапи могли використовувати щось інше, ніж HTTP. Тож відпочинок не безпечніший повністю, правда?

Але SOAP підтримує SSL так само, як і REST, він також підтримує WS-Security, що додає деякі функції безпеки підприємства. WS-Security пропонує захист від створення повідомлення до його споживання . Таким чином, для безпеки транспортного рівня незалежно від того, що ми знайшли щілину, яку можна запобігти за допомогою WS-Security.

Крім того, оскільки REST обмежений протоколом HTTP, тому його підтримка транзакцій не сумісна з ACID, а також не може забезпечити двофазну комісію між розподіленими транснаціональними ресурсами.

Але SOAP має всебічну підтримку як управління транзакціями на основі ACID для короткочасних транзакцій, так і управління транзакціями на основі компенсацій для довгострокових транзакцій. Він також підтримує двофазну комісію для розподілених ресурсів .

Я не роблю жодного висновку, але я віддаю перевагу веб-сервісу на основі SOAP, тоді як безпека, транзакції тощо є основними проблемами.

Ось "Підручник Java EE 6", де вони сказали, що RESTful дизайн може бути доречним, коли будуть виконані наступні умови . Гляньте.

Сподіваюся, вам сподобалось читати мою відповідь.


15
Чудова відповідь, але пам’ятайте, що REST може використовувати будь-який транспортний протокол. Наприклад, він може використовувати FTP.
Bhargav Nanekalva

11
Хто сказав, що REST не може використовувати SSL?
Осама Афтаб

1
@ Osama Aftab REST підтримує SSL, але SOAP підтримує SSL так само, як REST, він також підтримує WS-Security.
Бактерії

3
Для посилання на розмір XML-даних, коли компресія включена, XML зовсім невеликий.
GaTechThomas

2
Суть про розмір корисної навантаження повинна бути видалена, це таке одновимірне порівняння між JSON та XML і виявити її можливо лише в серйозно оптимізованих налаштуваннях, які знаходяться далеко між ними.
ThomasRS

126

REST ( RE презентаційний S tate T ransfer)
RE презентаційна S Tate об'єкта є T перенесена є REST, тобто ми не надсилаємо Object, ми надсилаємо стан Object. REST - це архітектурний стиль. Він не визначає так багато стандартів, як SOAP. REST призначений для викриття загальнодоступних API (тобто API API, API Google Maps) через Інтернет для обробки операцій CRUD над даними. REST орієнтований на доступ до названих ресурсів через єдиний послідовний інтерфейс.

SOAP ( S реалізації O bject A ccess P rotocol)
SOAP приносить свій власний протокол і фокусується на оголюючи частини логіки додатка (не дані) в якості послуг. SOAP виставляє операції. SOAP орієнтований на доступ до названих операцій, кожна операція реалізує певну логіку бізнесу. Хоча SOAP зазвичай називають веб-сервісами, це неправильно. SOAP дуже мало, якщо щось стосується Інтернету. REST надає справжні веб-сервіси на основі URI та HTTP.

Чому REST?

  • Оскільки REST використовує стандартний HTTP, це набагато простіше практично будь-коли.
  • REST легше впроваджувати, вимагає меншої пропускної здатності та ресурсів.
  • REST дозволяє багато різних форматів даних, де SOAP дозволяє лише XML.
  • REST дозволяє краще підтримувати клієнтів браузера завдяки підтримці JSON.
  • REST має кращі показники та масштабованість. Зчитування REST можна кешувати, читання на основі SOAP не можна кешувати.
  • Якщо безпека не є основною проблемою, і ми маємо обмежені ресурси. Або ми хочемо створити API, який легко використовуватимуться іншими розробниками публічно, тоді нам слід працювати з REST.
  • Якщо нам потрібні операції CRUD без громадянства, тоді перейдіть з REST.
  • REST зазвичай використовується в соціальних медіа, веб-чатах, мобільних службах та громадських API, таких як Google Maps.
  • Служба RESTful повертає різні MediaTypes для одного і того ж ресурсу, залежно від параметра заголовка запиту "Прийняти" як application/xmlабо application/jsonдля POST та /user/1234.jsonабо GET /user/1234.xmlдля GET.
  • Послуги REST призначені для виклику клієнтською програмою, а не кінцевим користувачем безпосередньо.
  • ST в REST походить від S tate T ransfer. Ви передаєте стан навколо, а не зберігати його на сервері, це робить REST-послуги масштабованими.

Чому SOAP?

  • SOAP не дуже простий у реалізації та вимагає більшої пропускної здатності та ресурсів.
  • Запит SOAP-повідомлення обробляється повільніше порівняно з REST, і він не використовує механізм веб-кешування.
  • WS-безпека: Хоча SOAP підтримує SSL (як і REST), він також підтримує WS-Security, що додає деякі функції безпеки підприємства.
  • WS-AtomicTransaction: потрібні транзакції ACID за послугу, вам знадобиться SOAP.
  • WS-надійне обмін повідомленнями: Якщо вашій програмі потрібна асинхронна обробка та гарантований рівень надійності та безпеки. Відпочинок не має стандартної системи обміну повідомленнями і очікує, що клієнти вирішать проблеми з комунікацією шляхом повторної спроби.
  • Якщо безпека викликає головне занепокоєння, а ресурси не обмежені, то ми повинні використовувати веб-сервіси SOAP. Як, наприклад, якщо ми створюємо веб-сервіс для шлюзових платежів, фінансових та телекомунікаційних робіт, тоді ми повинні працювати з SOAP, оскільки тут потрібна висока безпека.

введіть тут опис зображення

джерело1
джерело2


Дієслова / методи REST не мають відношення до методів CRUD від 1 до 1, хоча це може допомогти на початку зрозуміти стиль REST.
Сантьяго Марті Ольбрих

5
REST не підтримує SSL? єдину URL-адресу ресурсу для відпочинку не можна починати з https: //?
Mou

50

Різниця між відпочинком і милом

Мило

  1. SOAP - протокол.
  2. SOAP розшифровується як Простий протокол доступу до об’єктів.
  3. SOAP не може використовувати REST, оскільки це протокол.
  4. SOAP використовує сервісні інтерфейси для викриття бізнес-логіки.
  5. SOAP визначає стандарти, яких слід неухильно дотримуватися.
  6. SOAP вимагає більшої пропускної здатності та ресурсів, ніж REST.
  7. SOAP визначає власну безпеку.
  8. SOAP дозволяє лише формат даних XML.
  9. SOAP менш кращий, ніж REST.

ВІДПОВІДНИЙ

  1. REST - це архітектурний стиль.
  2. REST означає представницький державний трансфер.
  3. REST може використовувати веб-сервіси SOAP, оскільки це концепція і може використовувати будь-який протокол, як HTTP, SOAP.
  4. REST використовує URI для викриття бізнес-логіки.
  5. REST не визначає занадто багато стандартів, як SOAP.
  6. REST вимагає меншої пропускної здатності та ресурсів, ніж SOAP.
  7. Веб-сервіси RESTful успадковують заходи безпеки від базового транспорту.
  8. REST дозволяє використовувати різні формати даних, такі як звичайний текст, HTML, XML, JSON тощо.
  9. REST більш кращий, ніж мило.

Детальніше про це дивіться тут


Чи 3 і 6 під REST не суперечать?
Дражен

Ми просто порівнюємо особливості один одного.
Рекс

20

ІМХО ви не можете порівнювати SOAP і REST там, де це дві різні речі.

SOAP - це протокол, а REST - це архітектурна схема програмного забезпечення. В Інтернеті існує багато омани щодо SOAP проти REST .

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

REST представляє стан (як ресурси) сервера з URL-адреси. Він без громадянства і клієнти не повинні мати попередніх знань для взаємодії з сервером поза межами розуміння гіпермедіа.


14

Перш за все: офіційно, правильне питання буде web services + WSDL + SOAPпроти REST.

Оскільки, хоча веб-сервіс , використовується у вільному розумінні, але при використанні протоколу HTTP для передачі даних замість веб-сторінок, офіційно це дуже специфічна форма цієї ідеї. Згідно з визначенням, REST не є "веб-сервісом".

На практиці, однак, всі це ігнорують, тож давайте також ігнорувати це

Вже є технічні відповіді, тому я спробую надати трохи інтуїції.

Скажімо, ви хочете викликати функцію на віддаленому комп'ютері, реалізовану в іншій мові програмування (це часто називають віддаленим викликом процедури / RPC ). Припустимо, що цю функцію можна знайти за певною URL-адресою, наданою особою, яка її написала. Ви повинні (якось) надіслати йому повідомлення і отримати певну відповідь. Отже, слід розглянути два основні питання.

  • який формат повідомлення ви повинні надіслати
  • як слід переносити повідомлення вперед і назад

Для першого питання офіційне визначення - WSDL . Це XML-файл, який в детальному та суворому форматі описує, які параметри, які їх типи, імена, значення за замовчуванням, назву функції, яку потрібно викликати тощо . Приклад WSDL тут показує, що файл є людиною -читабельна (але не легко).

На друге питання є різні відповіді. Однак єдиним, що використовується на практиці, є SOAP . Основна його ідея полягає в тому, щоб: перегорнути попередній XML (фактичне повідомлення) в інший XML (що містить інформацію про кодування та інші корисні речі) та надіслати його через HTTP. Метод POST HTTP використовується для надсилання повідомлення, оскільки там завжди є тіло .

Основна ідея всього цього підходу полягає в тому, що ви позначаєте URL-адресу функції , тобто дії . Отже, якщо у вас є список клієнтів на якомусь сервері, і ви хочете переглянути / оновити / видалити одного, у вас має бути 3 URL-адреси:

  • myapp/read-customer а в тілі повідомлення передайте ідентифікатор клієнта, який слід прочитати.
  • myapp/update-customer а в тілі передайте ідентифікатор клієнта, а також нові дані
  • myapp/delete-customer і ідентифікатор в тілі

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

Отже, із підходом REST, номер клієнта 12 знайдеться за URL-адресою myapp/customers/12. Щоб переглянути дані про клієнтів, ви звертаєтесь до URL-адреси із запитом GET. Щоб видалити його, та сама URL-адреса, з дієсловом DELETE. Щоб оновити його, знову ж, те саме URL-адреса з дієсловом POST та новим вмістом в тілі запиту.

Більш детально про вимоги, які сервіс повинен виконувати, щоб вважатись справді РЕСТАВНИМИ, див . Модель зрілості Річардсона . У статті наводяться приклади та, що ще важливіше, пояснюється, чому (так звана) служба SOAP - це послуга REST рівня 0 (хоча, рівень 0 означає низьку відповідність цій моделі, це не образливо, і вона все ще корисна у багатьох випадках).


Що ви маєте на увазі RESTне веб-сервіс ?? Що JAX-RSтоді ??
Ashish

1
@AshishKamble: Я надав посилання специфікації служб відпочинку. Офіційне визначення містить лише протоколи WS- * (приблизно ті, які ми називаємо "SOAP"), а решта не є частиною цього офіційно
blue_note

1
@AshishKamble: Також зауважте, що існує також JAX-WS, що означає "веб-сервіси", що відрізняються від "сервісів відпочинку". У будь-якому випадку, відмінність не важлива для будь-яких практичних цілей, як я також зазначив.
blue_note

13

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

введіть тут опис зображення


9

Додаток для:

++ Помилка, яка часто робиться під час наближення до REST, - це думати про це як про "веб-сервіси з URL-адресами" - вважати REST як інший механізм віддаленого виклику процедури (RPC), як SOAP, але викликається через звичайні URL-адреси HTTP та без здорового SOAP Простори імен XML

++ Навпаки, REST мало стосується RPC. Тоді як RPC орієнтований на службу та орієнтований на дії та дієслова, REST орієнтований на ресурси, підкреслюючи речі та іменники, які містять додаток.


8

Багато з цих відповідей повністю забули згадати гіпермедіа-контроль (HATEOAS), що є абсолютно принциповим для REST. Кілька інших торкнулися цього, але насправді не так добре пояснили.

Ця стаття повинна пояснити різницю між поняттями, не потрапляючи в бур’яни за певними особливостями SOAP.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.