JSON, REST, SOAP, WSDL і SOA: як вони всі пов'язують разом


155

В даний час роблю кілька іспитів, і я борюся за деякі концепції. Усі вони були "згадані" в моїх записках, але я не розумів, як вони пов'язані між собою. Наскільки я розумію:

SOA - рішення, щоб спонукати споживачів / постачальників послуг спілкуватися. (наскільки я розумію, це термін парасольки для всього іншого)

WSDL - мова, яка описує послугу постачальника.

SOAP - «обгортка» протоколу XML, що використовується службами для надсилання повідомлень. Працює спільно з WSDL щодо надання параметрів?

REST - Шаблон дизайну, який за функцією схожий на SOAP, але уникає XML? (дійсно не впевнений у цьому)

JSON - Альтернатива XML, що використовує JavaScript? (не впевнений і в цьому)

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

Відповіді:


252

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

Ви створюєте API і дозволяєте іншим реалізовувати свої власні передні місця. Що ви тут щойно зробили, це реалізувати методологію SOA , тобто використовувати веб-сервіси.

Веб-сервіси роблять доступними функціональні блоки побудови через стандартні протоколи Інтернету незалежно від платформ та мов програмування.

Отже, ви розробляєте механізм обміну між бек-енд-сайтом (веб-сервісом), який виконує обробку та генерацію чогось корисного, та фронтальним (який споживає дані), яким може бути що завгодно. (Веб-програма, мобільний додаток або настільний додаток чи інша веб-служба). Єдине обмеження тут полягає в тому, що передній і задній край повинні "говорити" однією і тією ж "мовою".


Ось тут і входять SOAP та REST. Вони є стандартними способами, за допомогою яких можна вибрати спілкування з веб-сервісом.

Мило:

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

Відпочинок:

REST - це концепція дизайну.

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

Він не такий жорсткий, як SOAP. RESTful веб-сервіси використовують стандартні URI та методи для здійснення дзвінків у веб-сервіс . Коли ви запитуєте URI, він повертає представлення об'єкта, над яким потім можна виконувати операції (наприклад, GET, PUT, POST, DELETE). Ви не обмежуєтесь вибором XML для представлення даних, ви можете вибрати щось дійсно (включено JSON)

API REST Flickr йде далі і дозволяє також повертати зображення.


JSON і XML - це функціонально еквівалентний і загальний вибір. Існують також бази на основі RPC, такі як GRPC на основі протобуфів та Apache Thrift, які можна використовувати для спілкування між виробниками API та споживачами. Найпоширеніший формат, який використовується веб-API, - це JSON, оскільки він простий у використанні та розбору на всіх мовах.


36
Відмінна відповідь аж до виходу на JSON проти XML. Більш збалансована версія буде: XML та JSON - це способи серіалізації даних. XML є більш гнучким і має багато стандартів, розроблених навколо нього, але деякі вважають, що це занадто складно і багатослівно. JSON - це простіший формат, який визначає декілька основних структур стислими способами, який легко використовувати для неформальних структур даних; деякі люди над ними працюють над стандартами, щоб тиражувати ті, що існують поверх XML.
IMSoP

30

WSDL : Стенди для мови опису веб-служби

У SOAP (простий протокол доступу до об’єктів), коли ви використовуєте веб-сервіс та додаєте веб-сервіс до свого проекту, ваші клієнтські програми не знають про функції веб-сервісу. Сьогодні це якось старомодно, і для кожного виду різних клієнтів ви повинні реалізувати різні WSDLфайли. Наприклад, ви не можете використовувати один .Netі той же файл для phpклієнта. У WSDLфайлі є деякі описи функцій веб-сервісу. Тип цього файлу є XML. SOAPє альтернативою для REST.

REST : Підставки для передачі представницької держави

Це ще один вид сервісу API, він дійсно простий у використанні для клієнтів. Їм не потрібно мати спеціальне розширення WSDLфайлів, як файли. Операція CRUD може бути реалізована різними HTTP Verbs(GET для читання, POST для створення, PUT або PATCH для оновлення та DELETE для видалення потрібного документа), вони засновані на HTTPпротоколі, і більшість випадків відповідь є JSONабо XMLформатом. З іншого боку, клієнтська програма повинна точно викликати пов'язані HTTP Verbчерез точні назви параметрів імена та типи. Через відсутність спеціального файлу для визначення, наприклад WSDL, це робота вручну з використанням кінцевої точки. Але це не велика справа, тому що зараз у нас є багато плагінів для різних IDE, щоб генерувати реалізацію на стороні клієнта.

SOA : Стенди сервісно орієнтованої архітектури

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

JSON : Підставки дляjavascript Object Notation

при серіалізації об’єкта для javascript тип формату об'єкта - JSON. уявіть, що у вас є людський клас:

class Human{
 string Name;
 string Family;
 int Age;
}

і у вас є кілька примірників цього класу:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

коли ви серіалізуєте h1-об’єкт до JSON, результат:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

javascriptможе оцінити цей формат за eval()функцією та зробити асоціативний масив із цього JSONрядка. Це інше поняття порівняно з іншими поняттями, які я описав раніше.


Ця відповідь містить кілька помилок (наприклад, HTML <> HTTP)
Yassin Hajaj,

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