З огляду на ці області, я можу дати приблизний огляд, але я не можу зробити для вас ваші висновки. Є два головні області, в яких два протоколи відрізняються:
- Формат повідомлення
- Відкриття послуги
Формат повідомлення найпростіший для розуміння. Упаковка 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 включають процесори, до яких можна підключити, щоб забезпечити певний вигляд безпеки, але ви все одно відповідаєте за пошук їх та встановлення їх на місце.