SOAP ( простой протокол доступа к объектам ) и REST ( передача состояния представления ) прекрасны в своем роде. Поэтому я не сравниваю их. Вместо этого я пытаюсь изобразить картинку, когда я предпочел использовать REST и когда SOAP.
Что такое полезная нагрузка?
Когда данные отправляются через Интернет, каждая передаваемая единица включает в себя как информацию заголовка, так и фактические отправляемые данные. Заголовок идентифицирует источник и назначение пакета, в то время как фактические данные упоминаются как полезная нагрузка . Обычно полезная нагрузка - это данные, которые передаются от имени приложения, и данные, полученные системой назначения.
Теперь, например, мне нужно отправить телеграмму, и мы все знаем, что стоимость телеграммы будет зависеть от некоторых слов.
Так скажите мне среди упомянутых ниже двух этих сообщений, какое из них дешевле отправить?
<name>Arin</name>
или
"name": "Arin"
Я знаю, что ваш ответ будет вторым, хотя оба, представляющие одно и то же сообщение, второе дешевле в отношении стоимости.
Поэтому я пытаюсь сказать, что отправка данных по сети в формате JSON дешевле, чем отправка данных в формате XML для полезной нагрузки .
Вот первое преимущество или преимущества REST перед SOAP . SOAP поддерживает только XML, но REST поддерживает другой формат, такой как текст, JSON, XML и т. Д. И мы уже знаем, что если мы будем использовать Json, то определенно будем лучше в отношении полезной нагрузки.
Теперь SOAP поддерживает только XML, но также имеет свои преимущества.
В самом деле! Как?
SOAP опирается на XML тремя способами. Конверт - определяет, что находится в сообщении и как его обрабатывать.
Набор правил кодирования для типов данных и, наконец, компоновка вызовов процедур и собранных ответов.
Этот конверт отправляется через транспорт (HTTP / HTTPS), и выполняется RPC (удаленный вызов процедуры), а конверт возвращается с информацией в формате документа XML.
Важным моментом является то, что одним из преимуществ SOAP является использование «общего» транспорта, но REST использует HTTP / HTTPS . SOAP может использовать практически любой транспорт для отправки запроса, но REST не может. Таким образом, здесь мы получили преимущество использования SOAP.
Как я уже упоминал в предыдущем разделе «REST использует HTTP / HTTPS» , давайте углубимся в эти слова.
Когда мы говорим о REST через HTTP, все применяемые меры безопасности HTTP наследуются, и это известно как безопасность на транспортном уровне, и она защищает сообщения только тогда, когда она находится внутри сети, но как только вы доставили ее на другую сторону, вы не знаете сколько этапов придется пройти, прежде чем достичь реальной точки, в которой будут обрабатываться данные. И, конечно, на всех этих этапах можно использовать что-то отличное от HTTP. Так что отдых не совсем безопасен, верно?
Но SOAP поддерживает SSL так же, как REST, кроме того, он также поддерживает WS-Security, который добавляет некоторые функции безопасности предприятия. WS-Security предлагает защиту от создания сообщения до его потребления . Таким образом, для безопасности на транспортном уровне, какую бы лазейку мы не обнаружили, это можно предотвратить с помощью WS-Security.
Кроме того, поскольку REST ограничен протоколом HTTP, поэтому поддержка транзакций не соответствует требованиям ACID и не может обеспечить двухфазную фиксацию в распределенных транснациональных ресурсах.
Но SOAP имеет всестороннюю поддержку как управления транзакциями на основе ACID для краткосрочных транзакций, так и управления транзакциями на основе компенсации для длительных транзакций. Он также поддерживает двухфазную фиксацию по распределенным ресурсам. .
Я не делаю никаких выводов, но я предпочту веб-сервис на основе SOAP, в то время как безопасность, транзакции и т. Д. Являются главными проблемами.
Вот "Учебное пособие по Java EE 6", в котором говорится, что дизайн RESTful может быть подходящим при соблюдении следующих условий . Посмотри.
Надеюсь, вам понравилось читать мой ответ.