Някой може ли да ми каже каква е разликата между SOAP и REST web services?

+9 гласа
1,245 прегледа
попитан 2016 април 6 в Testing Tools от aneli (610 точки)
етикетиран отново 2016 април 7 от Mitko Vasilev
В кои случаи използваме Soap UI и в кои Rest? Koe e по-добро от двете да се използва?

1 отговор

+1 глас
отговорени 2016 април 7 от Daniel Ivanov (11,140 точки)
избран 2016 април 8 от Mitko Vasilev
 
Най-добър отговор

Най-напред не можем да ги сравняваме изцяло, понеже SOAP е протокол, а REST е архитектура. И REST не е REST без HATEOAS.

Накратко за SOAP (Simple Object Access Protocol), иначе казано протокол за достъп на прости обекти, се осланя предимно на XML да ти осигури messaging services. Microsoft са го разработвали за по-старите технологии, който не работят добре през Интернет, като например Common Object Request Broker Architecture (COBRA) и Distributed Component Object Model (DCOM). Не работят добре, понеже се осланят на бинарен messaging, XML messaging-а със SOAP работи много добре през Интернет.

Всеки input параметър е почти по 1 и същ начин дефиниран и задължително е от някакъв тип : било то стринг, integer или друг сложен обект. И всичкото това е дефинирано в езикът Web Service Descrption / Definition (WSD).

SOAP не знае и не му трябва да знае транспортния протокол, и затова може да минава през почти всеки протокол, като например  HTTP,SMTP,TCP или JMS.

SOAP support-ва WS-Addressing, WS-Policy, WS-Security, WS-Federation, WS-ReliableMessaging, WS-Coordination, WS-AtomicTransaction, and WS-RemotePortlets.

Хубавото му е,че е highly extensible ,тоест можеш да му слагаш разширение (excensions), и можеш да правиш много неща с него. Това, в което го бива е например в  .NET езиците и там почти не можеш да видиш XML частта.

Също да спомена,че голяма част от „магията“ на SOAP идва от Web Sevices Description Language (WSDL) – това е един файл, който е асоцииран със SOAP и дава дефиницията как мрежовата услуга работи, така че като създадеш референция към него, IDE-то да може да ти автоматизира процеса.

От друга страна, XML-ът, ползван за правене на request-и и за вземане на response-и , може да стане много сложен и в някои езици за програмиране трябва да си build-неш request-ите сам и може да стане голям проблем, ако допуснеш грешки.

Голяма роля играе езикът на който пишеш и ако той е сложен => и  като ползваш SOAP ще ти е трудно и сложно.

Но една от най – важните екстри на SOAP е вградения error handling – когато имаш проблем с request-а, response-а съдържа информация за грешката и така можеш да си го откриеш сам и да си го оправиш.

Друго интересно нещо, което SOAP има е,че можеш да не го ползваш с HTTP и в езици като Python и PHP използват SOAP вместо Simple Mail Transfer Protocol-a (SMTP).

Накратко за REST (Representational state transfer)

За много developer-и SOAP е труден и тромав – ползваш ли го с JavaScript трябва да пишеш тонове код за елементарни неща, понеже всеки път трябва да правиш структурата на XML.

Вместо това ползват REST, което се явява лека и “пъргава“ алтернатива. Вместо да правиш XML структура, с REST използваш URL и най-често само с URL можеш да си свършиш работата.

Може да ползва 4 различни HTTP глагола така да ги наречем: GET, POST, PUT и DELETE.

Решаване м/у SOAP и REST:

Преимущества на SOAP над REST:

  1. Не зависи от избора на език, платформа и начин на транспорт (на REST му трябва HTTP);
  2. Работи добре в distributed enterprise environments, тоест в разделени корпоративни среди (REST е най-добър за директна point-to-point комуникация);
  3. Стандартизиран е;
  4. Има си error handling;
  5. Има си и автоматизиране, когато се ползва с някои други софтуери.
  6. Има много разширения ( WS)

От друга страна REST е по-лесен за употреба и по-пъргав. Преимущесва на REST над SOAP:

  1. Няма скъпи tool-ове ,който да изискват ползването на уеб услуги;
  2. Лесно се учи;
  3. Ефикасен – REST ползва по-малки формати за съобщаване от SOAP и неговия XML;
  4. Бърз ( не му трябват и разширения);
  5. По-близък до други уеб технологии напоследък.

И накрая SOAP е задвижван от функциите (function-driven) ,за разлика от REST, който е задвижван от данните (data-driven).

Това е като цяло, пробвай различни web services и виж къде ще е по-удоно, но като цяло лесно се вижда,че REST е по-бърз и лесен и за по-малките неща е машина, докато SOAP си има error handling, автоматизирания за някои приложения, има и голямо разнообразие в нещата, които може да направи.

...