2015-09-12 6 views
3

Я столкнулся с большим дилеммом: в моей компании мы работаем над архитектурой микросервисов и переключимся на полноценную экосистему SOA.SOA - Microservices: используйте API REST или SOAP

Некоторые консультанты и разработчики говорят, что было бы лучше SOAP для веб-сервисов, потому что это позволило бы указать и дать утвержденный формат всем командам разработчиков. Я испугался, используя SOAP, мы были бы ограничены в конце.

Основываясь на вашем опыте, для архитектуры SOA/Microservices, было бы лучше использовать SOAP или REST API?

Заранее благодарим за отзыв.

ответ

6

Трудно выбрать стиль архитектуры на основе информации, предоставленной вами в вашем вопросе, так как вы не объясняете какие-либо бизнес-требования или ограничения, которые у вас есть. Также вы не объяснили, что будет использовать эти услуги.

Я работаю с SOAP и REST на некоторое время, могу вам сказать, что у обоих есть adv/dis. Но вместо того, чтобы перечислить их, я попытаюсь объяснить свои причины и сценарии, в которых я буду выбирать один из них.

REST

  1. Если услуги будут потребляемый интернет-приложения веб-браузер, мобильное приложение (при обработке мощности является «низкий») Я буду выбирать REST, как связь делается в формате JSON, который более дружелюбный с технологиями javascript, а время обработки и обработки меньше, чем XML.
  2. Когда сервисы будут предоставлять данные как часть простого API, предоставляя пользователю доступ к CRUD-операциям или когда в процессах задействовано не так много бизнес-логики. Я также выберу REST, если мне нужно создать открытый API.
  3. Если время в игре, реализация REST проще, чем SOAP. Поскольку нет стандартов, вам не нужно иметь контракты. Есть несколько лучших практик, но в конце вы можете использовать HTTP-глаголы по своему усмотрению и создавать стиль URI так, как вы предпочитаете, но с такой гибкостью вы в какой-то момент начнете делать своего рода API RPC вместо ресурса API (remeber REST - это больше о ресурсах).
  4. Воспользуйтесь преимуществами кеша, предоставляемого глаголом http GET в браузерах, если целью вашего сервиса является предоставление информации о приложении веб-страницы.
  5. С точки зрения разработчика, что всегда важно, быстрее создавать такие услуги. Вам просто нужно знать структуру, которая поддерживает REST, такую ​​как JAX-RS, Spring REST, Jersey и некоторые понятия JSON. Кривая обучения также меньше.
  6. Это легкая форма транспортной информации, и она быстрее, так как она не требует большой обработки.

SOAP

  1. Есть контракты, определяющие связь в услугах, вы будете привязаны к этому контракту, и ваши клиенты должны следовать за ним тоже. Любое изменение этого контракта повлияет на всех ваших клиентов. Вы должны всегда документировать, какие контракты вы должны использовать для своих операций.
  2. Имеют интересные стандарты, которые могут работать в системной интеграции как WS-совместимость, WS-адресация, WS-security, поэтому в основном это технология, которая имеет несколько стандартов, что упрощает фазу соглашения, а не всегда реализацию.
  3. Может использоваться с различным транспортным уровнем smtp, http, если вы хотите иметь разных клиентов.
  4. Хороший стандарт для передачи двоичных данных MTOM/XOP или SwA. Если вы предпочитаете, чтобы этот отправил байты в теле запроса PUT.
  5. Лучшее определение безопасности и целостности, множество опций, исходящих от стандартов, обычно более используемым в REST является OAuth.
  6. С точки зрения разработчика это потребует больше времени для изучения, а также вам необходимо иметь, по крайней мере, очень простые знания XSD, XPath, WSDL и других концепций. В некоторых ситуациях соблюдение стандартов не всегда легко. У вас есть хорошие инструменты и рамки для их создания JAX/WS, Spring-ws, CXF.

Отвечая на ваш вопрос и думая в небольшой/средней компании, пытающейся стандартизировать ИТ-инфраструктуру, я бы выбрал SOAP, поскольку у него есть более зрелая поддержка инструмента во всех областях. Лично мне нравятся SOAP: сообщения об ошибках, стиль RPC для бизнес-операций, который предлагает SOAP. Предполагая, что ваши микросервисы не связаны с определенной областью, я думаю, что какой-то ESB может помочь вам в управлении всей инфраструктурой и настройке ваших бизнес-правил. Иногда люди могут подумать, что SOAP переоценивает решение. Но я иду с идеей, поскольку это стандарт, который был на рынке некоторое время.

+2

Я согласен с последним утверждением, что на уровне предприятия, похоже, у вас будут внешние потребители. Это меньше головная боль, когда у вас есть стандартный документированный интерфейс a.k.a SOAP, когда у вас есть внешние потребители. –

1

Возможно, самым большим преимуществом архитектуры микросервисов является увеличение скорости, с которой вы можете развернуть новые функции в производство. Чтобы достичь этого, микросервисы должны быть максимально независимы друг от друга. WSDL-контракты имеют тенденцию приводить к более тесной связи по сравнению с контрактами REST. С этой точки зрения имеет смысл выбрать REST. Но все зависит от целей, которые вы хотели выполнить, когда вы решили пойти на микросервис или архитектуру SOA.

0

С развитием стандартов, таких как RAML и Swagger для определения API REST, разница между веб-службами SOAP и REST сужается. Если основное внимание уделяется раскрытию API-интерфейсов, как упоминалось ранее более ранним респондентом, REST - лучший выбор, так как есть много легких продуктов управления API, которые поддерживают это.

Смежные вопросы