Обзор
SOAP – это протокол обмена сообщениями, а в двух словах – просто еще один язык XML.
Его назначение — обмен данными по сети. Его заботой является инкапсуляция этих данных и правила их передачи и получения.
HTTP – это прикладной протокол, а сообщения SOAP размещаются в качестве полезной нагрузки HTTP.
Несмотря на накладные расходы HTTP, его преимущество заключается в том, что это протокол, открыт для брандмауэров, хорошо понятен и широко поддерживается. Таким образом, доступ к веб-сервисам и их раскрытие можно получить с помощью уже имеющихся технологий.
Обмен сообщениями SOAP обычно осуществляется через HTTP. Хотя можно использовать и другие (прикладные) протоколы, например. SMTP или FTP, привязки не-HTTP не указаны в спецификациях SOAP и не поддерживаются WS-BP (спецификация взаимодействия).
Вы можете обмениваться сообщениями SOAP через необработанный TCP, но тогда у вас будут веб-службы, которые несовместимы (несовместимы с WS -БП).
В настоящее время ведутся споры о том, почему вообще нужно использовать 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-трафик открыт для брандмауэров, поэтому при работе веб-сервиса не возникает проблем из-за сетевой безопасности.
person
Cratylus
schedule
27.12.2010