it-roy-ru.com

JSON, REST, SOAP, WSDL и SOA: как они все связаны друг с другом

В настоящее время делаю некоторые экзамены, и я пытаюсь понять некоторые концепции. Они все были "упомянуты" в моих заметках, но я не совсем понял, как они все связаны друг с другом. Насколько я понимаю:

SOA - решение для общения потребителей/поставщиков услуг. (насколько я понимаю это общий термин для всего остального)

WSDL - язык, который описывает сервис провайдера.

SOAP - "оболочка" протокола XML, используемая сервисами для отправки сообщений. Работает совместно с WSDL как предоставить параметры?

ОТДЫХ - Шаблон проектирования, который похож на функцию SOAP, но избегает XML? (действительно не уверен насчет этого)

JSON - альтернатива XML, которая использует JavaScript? (не уверен насчет этого тоже)

Оглядываясь в Интернете, кажется, нет четкого определения того, что все это и как они взаимосвязаны.

154
Jay

Представьте, что вы разрабатываете веб-приложение и решаете отделить функциональность от представления приложения, поскольку оно предоставляет большую свободу.

Вы создаете API и позволяете другим реализовывать свои собственные внешние интерфейсы. То, что вы только что сделали, это внедрили методологию SOA , то есть с использованием веб-сервисов.

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

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


Вот где вступают SOAP и ​​REST. Это стандартные способы взаимодействия с веб-сервисом.

SOAP:

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

REST:

REST - это концепция дизайна.

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

Это не так жестко, как SOAP. RESTful web-сервисы использовать стандартные URI и методы для звонков в веб-сервис. Когда вы запрашиваете URI, он возвращает представление объекта, с которым вы затем можете выполнять операции (например, GET, PUT, POST, DELETE). Вы не ограничены выбором XML для представления данных, вы можете выбрать что угодно (включая JSON)

API Flickr REST идет дальше и позволяет вам также возвращать изображения.


JSON и XML, функционально эквивалентны и распространены выбор. Существуют также основанные на RPC фреймворки, такие как GRPC на основе Protobufs и Apache Thrift, которые можно использовать для связи между производителями и потребителями API. Наиболее распространенным форматом, используемым веб-API, является JSON, поскольку его легко использовать и анализировать на любом языке.

248
Anirudh Ramanathan

WSDL: обозначает язык описания веб-служб

В SOAP (простой протокол доступа к объектам), когда вы используете веб-службу и добавляете веб-службу в свой проект, ваши клиентские приложения не знают о функциях веб-службы. В настоящее время это как-то старомодно, и для каждого типа клиента вы должны реализовать разные файлы WSDL. Например, вы не можете использовать один и тот же файл для клиента .Net и php. Файл WSDL содержит некоторые описания функций веб-службы. Тип этого файла: XML. SOAP является альтернативой для REST.

REST: стенды для передачи представительского состояния

Это еще один вид API-сервиса, он действительно прост в использовании для клиентов. Им не нужно иметь специальное расширение файла, например WSDL files. Операция CRUD может быть реализована с помощью различных HTTP Verbs (GET для чтения, POST для создания, PUT или PATCH для обновления и DELETE для удаления требуемого документа), они основаны на протоколе HTML и чаще всего отвечают в формате 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. Эта концепция отличается от других концепций, которые я описал ранее.

28
Saman Gholami