Обзор
SOAP - это протокол обмена сообщениями , и в двух словах - это просто еще один язык XML.
Его целью является обмен данными по сетям. Его заботой является инкапсуляция этих данных и правила их передачи и получения.
HTTP - это протокол приложения , а сообщения SOAP помещаются в полезную нагрузку HTTP.
Хотя есть издержки HTTP, у него есть преимущество в том, что это протокол, открытый для брандмауэров, понятный и широко поддерживаемый. Таким образом, веб-сервисы могут быть доступны и доступны с помощью уже внедренных технологий.
Сообщения SOAP обычно обмениваются через HTTP . Хотя возможно использование других (прикладных) протоколов, например, SMTP или FTP , не-HTTP-привязки не определяются спецификациями SOAP и не поддерживаются WS-BP (спецификацией взаимодействия) .
Вы можете обмениваться SOAP-сообщениями по необработанному TCP, но тогда у вас будут веб-службы, которые не совместимы (не совместимы с WS-BP).
В настоящее время спор заключается в том, почему вообще возникают издержки SOAP, а не отправка данных по HTTP ( RESTful WS ).
Зачем использовать HTTP для SOAP ?
Я попытаюсь более подробно рассмотреть вопрос в ОП, спрашивающий, почему используется HTTP для SOAP:
Прежде всего, SOAP определяет формат инкапсуляции данных и все.
Теперь большая часть трафика в сети проходит через HTTP. HTTP является литературным ВЕЗДЕ и поддерживается хорошо налаженной инфраструктурой серверов и клиентов (а именно браузеров). Кроме того, это очень хорошо понятный протокол.
Люди, создавшие SOAP, хотели использовать эту готовую инфраструктуру и
- SOAP-сообщения были разработаны так, чтобы их можно было передавать по HTTP
- В спецификациях они не относятся к каким-либо другим связываниям, отличным от HTTP, но конкретно ссылаются на HTTP в качестве примера для передачи.
Туннелирование по HTTP помогло и помогло в его быстром внедрении. Поскольку инфраструктура HTTP уже внедрена, компаниям не придется тратить дополнительные деньги на реализацию другого вида. Вместо этого они могут предоставлять и получать доступ к веб-службам с использованием уже развернутой технологии.
В частности, в Java веб-служба может быть развернута либо как конечная точка сервлета, либо как конечная точка EJB. Таким образом, все базовые сетевые сокеты, потоки, потоки, HTTP-транзакции и т. Д. Обрабатываются контейнером, и разработчик фокусируется только на полезной нагрузке XML.
Таким образом, компания использует Tomcat или JBoss в порту 80, а веб-служба также развернута и доступна.
Программирование на транспортном уровне не требует усилий, а надежный контейнер обрабатывает все остальное.
Наконец, тот факт, что брандмауэры настроены не ограничивать HTTP-трафик, является третьей причиной предпочтения HTTP.
Поскольку HTTP-трафик обычно разрешен, связь между клиентами и серверами намного проще, и веб-службы могут функционировать без проблем с защитой сети в результате туннелирования HTTP.
SOAP - это XML = обычный текст, поэтому брандмауэры могут проверять содержимое тела HTTP и блокировать его соответствующим образом. Но в этом случае их также можно усовершенствовать, чтобы отклонять или принимать SOAP в зависимости от содержимого. Эта часть, которая вас беспокоит, не связана с веб-службами или SOAP, и, возможно, вам следует начать новый поток, касающийся работы брандмауэров.
Сказав это, тот факт, что HTTP-трафик неограничен, часто вызывает проблемы с безопасностью, поскольку брандмауэры по существу обходятся, и именно поэтому шлюзы приложений входят.
Но это не связано с этим постом.
Резюме
Итак, чтобы суммировать причины использования HTTP:
- HTTP популярен и успешен.
- Создана HTTP-инфраструктура, поэтому никаких дополнительных затрат на развертывание веб-сервисов нет.
- HTTP-трафик открыт для брандмауэров, поэтому нет проблем во время работы веб-службы в результате сетевой безопасности.