Учитывая эти области, я могу дать приблизительный обзор, но я не могу сделать ваши выводы для вас. Существуют две основные области, в которых два протокола различаются:
- Формат сообщения
- Обнаружение услуг
Формат сообщения проще всего понять. Пакет SOAP для запросов и ответов довольно тяжелый. Есть конверт SOAP, который содержит заголовок и раздел тела. Заголовок может использоваться несколькими фильтрами в цепочке запросов для выполнения какой-либо идентификации, авторизации и т. Д. Однако анализ XML является дорогостоящим, что приводит к определенным потерям в масштабируемости вашей системы. Как много зависит от уровня обработки SOAP в вашем стеке.
Обнаружение службы - то, где вы, вероятно, будете иметь наибольшее количество разногласий REST по своей природе обеспечивает предсказуемые конечные точки, а содержимое запроса представляет собой простой HTTP-запрос. Преимущество заключается в том, что нет никаких дополнительных затрат, и конечные пользователи могут в значительной степени догадаться, как сделать то, что им нужно, как только они поймут структуру URL вашего сайта. Конечно, наивные люди, которые заботятся о безопасности, увидят в этом слабость. В конце концов, с SOAP вы должны использовать WSDL, чтобы знать, каковы конечные точки. Конечно, с SOAP вы получили полный формат сообщения, чтобы вы могли проводить более целенаправленные атаки.
В разбивке по категориям, которые вы дали:
Безопасность
Ни один из них не является более безопасным, чем другой. Используйте хорошие принципы безопасности:
- Шифровать сообщения
- Убедитесь, что вы аутентифицируете и авторизуете пользователей перед обработкой
- Хорошие навыки кодирования, чтобы избежать прямых атак
- И это только короткий список.
Помни о безвестности! = Безопасность.
Производительность
Исходная производительность и масштабируемость перейдут в REST из-за запроса, следующего за простыми протоколами HTTP. Большинство стеков SOAP используют синтаксический анализ SAX (анализ на основе событий), что значительно улучшает масштабируемость стеков SOAP, но оказывает ощутимое влияние на издержки. SOAP имеет обычные накладные расходы на обработку HTTP в дополнение к накладным расходам на синтаксический анализ XML. У REST просто накладные расходы на обработку HTTP.
сложность
С точки зрения системы, REST побеждает. Меньше движущихся частей, более узкая цепочка запросов и т. Д. Это означает, что сделать надежнее проще.
С точки зрения программиста, SOAP может победить, если IDE или среда, которую вы используете, обеспечивают хорошую поддержку. По сути, с REST вы обязаны выполнять работу по предварительной обработке (аутентификация / авторизация / и т. Д.), В то время как с помощью SOAP большая часть этого может быть выполнена с помощью подключаемой цепочки обработки.
Мои предпочтения
Мне очень удобно работать с HTTP-запросами, и я знаю, как работает веб. В результате подход REST для меня более предпочтителен. Однако я знаю, что некоторым из моих клиентов это неудобно. Они прочитали какую-то отраслевую статью, осуждающую безопасность REST по сравнению с SOAP и т. Д. Суть в том, что ни один из подходов не гарантирует безопасность. Вы должны убедиться, что приложение является настолько безопасным, насколько это необходимо. Очевидно, что социальное веб-приложение не требует (или не желает) такой безопасности, как банковская или государственная система. Многие стеки SOAP включают в себя процессоры, которые вы можете подключить для обеспечения некоторого подобия безопасности, но вы все равно несете ответственность за их поиск и установку.