Трудно выбрать стиль архитектуры на основе информации, предоставленной вами в вашем вопросе, так как вы не объясняете какие-либо бизнес-требования или ограничения, которые у вас есть. Также вы не объяснили, что будет использовать эти услуги.
Я работаю с SOAP и REST на некоторое время, могу вам сказать, что у обоих есть adv/dis. Но вместо того, чтобы перечислить их, я попытаюсь объяснить свои причины и сценарии, в которых я буду выбирать один из них.
REST
- Если услуги будут потребляемый интернет-приложения веб-браузер, мобильное приложение (при обработке мощности является «низкий») Я буду выбирать REST, как связь делается в формате JSON, который более дружелюбный с технологиями javascript, а время обработки и обработки меньше, чем XML.
- Когда сервисы будут предоставлять данные как часть простого API, предоставляя пользователю доступ к CRUD-операциям или когда в процессах задействовано не так много бизнес-логики. Я также выберу REST, если мне нужно создать открытый API.
- Если время в игре, реализация REST проще, чем SOAP. Поскольку нет стандартов, вам не нужно иметь контракты. Есть несколько лучших практик, но в конце вы можете использовать HTTP-глаголы по своему усмотрению и создавать стиль URI так, как вы предпочитаете, но с такой гибкостью вы в какой-то момент начнете делать своего рода API RPC вместо ресурса API (remeber REST - это больше о ресурсах).
- Воспользуйтесь преимуществами кеша, предоставляемого глаголом http GET в браузерах, если целью вашего сервиса является предоставление информации о приложении веб-страницы.
- С точки зрения разработчика, что всегда важно, быстрее создавать такие услуги. Вам просто нужно знать структуру, которая поддерживает REST, такую как JAX-RS, Spring REST, Jersey и некоторые понятия JSON. Кривая обучения также меньше.
- Это легкая форма транспортной информации, и она быстрее, так как она не требует большой обработки.
SOAP
- Есть контракты, определяющие связь в услугах, вы будете привязаны к этому контракту, и ваши клиенты должны следовать за ним тоже. Любое изменение этого контракта повлияет на всех ваших клиентов. Вы должны всегда документировать, какие контракты вы должны использовать для своих операций.
- Имеют интересные стандарты, которые могут работать в системной интеграции как WS-совместимость, WS-адресация, WS-security, поэтому в основном это технология, которая имеет несколько стандартов, что упрощает фазу соглашения, а не всегда реализацию.
- Может использоваться с различным транспортным уровнем smtp, http, если вы хотите иметь разных клиентов.
- Хороший стандарт для передачи двоичных данных MTOM/XOP или SwA. Если вы предпочитаете, чтобы этот отправил байты в теле запроса PUT.
- Лучшее определение безопасности и целостности, множество опций, исходящих от стандартов, обычно более используемым в REST является OAuth.
- С точки зрения разработчика это потребует больше времени для изучения, а также вам необходимо иметь, по крайней мере, очень простые знания XSD, XPath, WSDL и других концепций. В некоторых ситуациях соблюдение стандартов не всегда легко. У вас есть хорошие инструменты и рамки для их создания JAX/WS, Spring-ws, CXF.
Отвечая на ваш вопрос и думая в небольшой/средней компании, пытающейся стандартизировать ИТ-инфраструктуру, я бы выбрал SOAP, поскольку у него есть более зрелая поддержка инструмента во всех областях. Лично мне нравятся SOAP: сообщения об ошибках, стиль RPC для бизнес-операций, который предлагает SOAP. Предполагая, что ваши микросервисы не связаны с определенной областью, я думаю, что какой-то ESB может помочь вам в управлении всей инфраструктурой и настройке ваших бизнес-правил. Иногда люди могут подумать, что SOAP переоценивает решение. Но я иду с идеей, поскольку это стандарт, который был на рынке некоторое время.
Я согласен с последним утверждением, что на уровне предприятия, похоже, у вас будут внешние потребители. Это меньше головная боль, когда у вас есть стандартный документированный интерфейс a.k.a SOAP, когда у вас есть внешние потребители. –