Анализ технологии веб-сервисов XML: краткий обзор принципов WSDL и SOAP и случаев применения
Анализ технологии веб-сервисов XML: краткий обзор принципов WSDL и SOAP и случаев применения

Веб-службы XML — это технология публикации, обнаружения и использования компонентов приложения в Интернете. Он основан на ряде стандартов и протоколов, таких как WSDL, SOAP, RDF и RSS. Вот некоторые из них:

  • WSDL(WebСлужитьописыватьязык):используется для описанияWebСлужитьизна основеXMLизязык,определение Понятно Служитьизинтерфейс、действоватьиинформация Формат
  • SOAP (протокол простого доступа к объектам): даана основеXMLизпротокол,Используется для обмена структурированной информацией о существующей сети. Определяет формат информации и правила передачи.,И широко используется для общения между веб-службами.
  • RDF (Resource описывать фреймворк): как писать веб-ресурс из фреймворка.,Используйте XML-представление. Он обеспечивает унифицированный способ записи ресурсов и связей.,да Одна из основ семантической сети во Всемирной паутине.
  • RSS (Really Simple Syndicate): формат XML для публикации содержимого веб-сайта. Это позволяет пользователям подписаться на обновления сайта.,И может автоматически получать новейший контент. Файлы RSS обычно используются в блогах, новостных веб-сайтах и ​​т. д.

Характеристики веб-служб XML включают в себя:

  • Автономность и запись: Веб-Служить может самостоятельно описывать интерфейс и функциональность.,Сделайте его простым в использовании и интегрируйте в другие приложения.
  • на основе Открытого протокола: Веб Служить использует стандарт Открытого изпротоколи.,Например, HTTPиSOAP,к Обеспечить взаимодействие между различными платформами и системами.
  • Многоразовые компоненты: WebСлужить предоставляет многоразовые компоненты изприложения.,Например, конвертация валюты, прогноз погоды и т. д.,Может вызываться и интегрироваться другими приложениями.
  • Подключение к существующему программному обеспечению: WebСлужить может подключаться к существующим программным системам.,И обеспечьте единый способ обмена данными и вызова функций.

В практических приложениях вы можете создавать и развертывать веб-сервисы для реализации различных функций и сервисов — от простого преобразования данных до сложной бизнес-логики.

XML WSDL

WSDL да Web Services Description Language аббревиатура

WSDL используется для описания Web Служить

WSDL к XML официальное письмо

WSDL-документ

WSDL-документописывать Понятноодин Web Служить。它指定Понятно Служитьиз Расположениеки Служитьизметод,Используйте следующий основной элемент:

Описание элемента

<types> определение Web Служить использовал (XML Schema) тип данных

<message> Для каждой операции определение элемента данных

<portType> Описывает действия, которые можно выполнить, и соответствующие сообщения.

<binding> Формат данных для каждого порта

Основная структура WSDL-документиз выглядит следующим образом:

Язык кода:xml
копировать
`<definitions>`

`<types>`
  тип данныхопределение........
`</types>`

`<message>`
  Определение передачи данных....
`</message>`

`<portType>`
  Комплекс операций...
`</portType>`

`<binding>`
  Спецификация формата данных протокола....
`</binding>`

`</definitions>`

пример WSDL

Язык кода:xml
копировать
`<message name="getTermRequest">`
  `<part name="term" type="xs:string"/>`
`</message>`

`<message name="getTermResponse">`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="getTerm">`
    `<input message="getTermRequest"/>`
    `<output message="getTermResponse"/>`
  `</operation>`
`</portType>`

существоватьэтот Примерсередина,<portType> элементы будут "glossaryTerms" определение — это имя порта, «getTerm» определение — это имя операции.

Операция getTerm имеет входное сообщение с именем «getTermRequest» и выходное сообщение с именем «getTermResponse».

<message> Элементопределение имеет каждую информацию, частичную и связанный с ней тип. данных。

<portType> элемент

<portType> элементопределение Понятноодин Web Служить,Вы можете выполнять операции и связанные с ними операции.

Операция запрос-ответ является наиболее распространенной, но WSDL имеет четыре типа:

тип определение

Односторонняя. Эта операция может получать информацию, но не возвращает ответ.

Запрос-ответ. Эта операция принимает запрос и возвращает ответ.

Запросить ответ. Эта операция отправляет запрос и ожидает ответа.

Уведомление. Эта операция может отправлять информацию, но не будет ждать ответа.

Односторонняя операция WSDL

Пример односторонней операции:

Язык кода:xml
копировать
`<message name="newTermValues">`
  `<part name="term" type="xs:string"/>`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="setTerm">`
    `<input name="newTerm" message="newTermValues"/>`
  `</operation>`
`</portType >`

существоватьвышеиз Примерсередина,portType "glossaryTerms" определение один по имени "setTerm" односторонняя операция.

"setTerm" Разрешено использовать операции "newTermValues" Ввод нового сообщения, включающего входные параметры. "term" и "ценить". Но да,没有длядействоватьопределениевыход。

Операции запрос-ответ WSDL

Пример операции запрос-ответ:

Язык кода:xml
копировать
`<message name="getTermRequest">`
  `<part name="term" type="xs:string"/>`
`</message>`

`<message name="getTermResponse">`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="getTerm">`
    `<input message="getTermRequest"/>`
    `<output message="getTermResponse"/>`
  `</operation>`
`</portType>`

существоватьвышеиз Примерсередина,portType "glossaryTerms" определение Понятноодиноперации запрос-ответ,Называется «getTerm».

Для операции getTerm требуется входное сообщение с именем «getTermRequest», содержащее параметр с именем «term», и она возвращает выходное сообщение с именем «getTermResponse», содержащее параметр с именем «value».

Привязка WSDL к SOAP

WSDL обязательностьопределение Понятно Web Служить Формат изинформации и протокол подробно.

Пример операции запрос-ответ:

Язык кода:xml
копировать
`<message name="getTermRequest">`
  `<part name="term" type="xs:string"/>`
`</message>`

`<message name="getTermResponse">`
  `<part name="value" type="xs:string"/>`
`</message>`

`<portType name="glossaryTerms">`
  `<operation name="getTerm">`
    `<input message="getTermRequest"/>`
    `<output message="getTermResponse"/>`
  `</operation>`
`</portType>`

`<binding type="glossaryTerms" name="b1">`
   `<soap:binding style="document"`
   `transport="http://schemas.xmlsoap.org/soap/http" />`
   `<operation>`
     `<soap:operation soapAction="http://example.com/getTerm"/>`
     `<input><soap:body use="literal"/></input>`
     `<output><soap:body use="literal"/></output>`
  `</operation>`
`</binding>`

binding элемент имеет два свойства - name и type

name свойство (можно использовать любое имя) определение обязательностииз имени,type Свойство указывает на связанный порт, в данном случае "glossaryTerms" порт.

soap:binding элемент имеет два свойства - style и transport

style свойство Можеткда "rpc" или "документ". В этом случае мы используем documenttransport свойствоопределениехотетьиспользовал SOAP протокол. В этом случае мы используем HTTP

operation элементопределение Понятно portType Каждая операция раскрыта.

Для каждой операции должен быть соответствующий SOAP действие. Вы также должны указать, как кодировать ввод и вывод. существуют В этом примере мы используем "literal"。

XML SOAP

SOAP да Simple Object Access Protocol аббревиатура

Протокол связи SOAP для приложений

SOAP используется для отправки и получения информации в формате.

SOAP да Платформенная независимость

SOAP на основе XML

Зачем использовать SOAP?

Web приложение способен Интернет Очень важно общаться на да.

существовать приложение Лучший способ общения между дапроходить HTTP,потому что HTTP подчиняется всем Интернет 浏览устройствои Служитьустройствоизподдерживать。SOAP Просто да был создан для достижения этой цели.

SOAP Обеспечивает работающее существование различных операционных систем, с использованием различных технологий и языков программирования. приложение способ общения между ними.

Строительные блоки SOAP

SOAP Информация проста XML документ,Включатьк Внизэлемент:

один Envelope элемент, используемый для идентификации XML Документация как SOAP информация

один содержит информацию заголовка из Header элемент

один содержит информацию о вызове и ответе Body элемент

один содержит информацию о статусе ошибок. Fault элемент

кна всехэлемент Все заявленосуществовать SOAP в пространстве имен конверта по умолчанию

Грамматические правила

к Внизда一些重хотетьиз Грамматические правила:

SOAP информация должна быть использована XML Кодировать

SOAP информация должна быть использована SOAP Envelope пространство имен

SOAP информацияне может содержать DTD Цитировать

SOAP информацияне может содержать XML инструкции по обработке

Долженпространство имен Воля Envelope определениедля SOAP Envelope

Если используется другое изпространство имен,приложение Создаст ошибку и отбросит информацию.

АтрибутcodingStyle

encodingStyle свойствоиспользуется дляопределениедокументсерединаиспользовалтип данных。Долженсвойство Можетк Появлятьсясуществоватьлюбой SOAP элемент и применяется к этому элементу и всем его подэлементам.

SOAP информация не имеет кодировки по умолчанию.

SOAP Header элемент

Необязательный SOAP Header элемент содержит около SOAP информацияизприложение конкретной информации (например, проверка личности, оплата и т. д.).

Если сохранитьсуществовать Header элемент, ты должен положить его в существование Envelope элементиз Нет.одинребенокэлемент Расположение。

Уведомление:Header элемент Из Все прямые подэлементы должны быть дапространством именограниченныйиз。

SOAP существоватьпо умолчаниюпространство именсерединаопределение Понятно三个свойство。Этисвойствода:mustUnderstandactor и encodingStyle

SOAP Header Как получателю следует поступить в этой ситуации? SOAP информация。

mustUnderstand свойство

SOAP mustUnderstand Свойство можно использовать, чтобы указать получателю, должна ли быть обработана запись заголовка.

Если mustUnderstand="1" добавить в Header элементребенокэлемент означает обработку Header Получатель должен идентифицировать элемент. Если получатель не распознает элемент, процесс существует. Header потерпит неудачу.

грамматика

soap:mustUnderstand="0|1"

actor свойство

SOAP Информация может передаваться по пути информации с разными конечными точками, передаваемыми от отправителя к

Ресивер. Однако,SOAP информацияиз Не все части да могут ориентироваться на конечную конечную точку, в то время как да может нацеливать информацию на несколько конечных точек на пути.

SOAP actor свойство используется для Header элемент направлен к определенной конечной точке.

грамматика

soap:actor="URI"

АтрибутcodingStyle

encodingStyle свойствоиспользуется дляопределениедокументсерединаиспользовалтип данных。Долженсвойство Можетк Появлятьсясуществоватьлюбой SOAP элемент, он будет применен к содержимому этого элемента и всем его подэлементам.

SOAP информация не имеет кодировки по умолчанию.

грамматика

soap:encodingStyle="URI"

SOAP Body элемент

необходимый SOAP Body элемент содержит информациюфактическую SOAP информация, для информациииз конечной точки.

SOAP Body элементиз直接ребенокэлемент Можеткдапространство именограниченныйиз。

Пример

<?xml version="1.0"?>

<soap:Envelope

</m:GetPrice>

</soap:Body>

</soap:Envelope>

Выше из Пример запросил цену яблока. Обратите внимание, что вышеизложенное m:GetPrice и Item элементдаприложение конкретного изэлемента. они не принадлежат SOAP пространство имен

SOAP Fault элемент

Необязательный SOAP Fault Элемент используется для указания информации об ошибке.

SOAP Fault элемент содержит SOAP Информация о статусе изошибки.

Если сохранитьсуществовать Fault элемент, он должен быть таким Body элементизребенокэлемент Появляться。Fault элементможет толькосуществовать SOAP Появляется один раз в информации.

SOAP Fault элементиметьк Внизребенокэлемент:

ребенок Описание элемента

<faultcode> Код, используемый для идентификации ошибки

<faultstring> Понятное объяснение ошибки

<faultactor> Информация, вызвавшая возникновение ошибки

<detail> Содержит и Body Информация об ошибках, связанных с конкретным применением элемента

Коды ошибок SOAP

когдаописыватьошибкачас,faultcode элемент должен использоваться при определениииз faultcode ценить:

ошибка описывать

VersionMismatch существовать SOAP Envelope элементизпространство В именах обнаружено недопустимое изпространство. имен

MustUnderstand Header элементиз立即ребенокэлемент,mustUnderstand свойство установлено в "1", не понял

Client информация не в правильном формате или содержит неверную информацию

Server Возникла проблема со Служить, поэтому информация не может быть продолжена.

HTTP-протокол

HTTP проходить TCP/IP общаться。HTTP Использование клиента TCP подключиться к HTTP Служить. После установления соединения клиент может отправить HTTP проситьинформация:

Язык кода:bash
копировать
POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200

Затем сервер Служить обрабатывает запрос и отправляет HTTP Ответ отправляется обратно клиенту. В ответе содержится код состояния, указывающий статус запроса:

Язык кода:bash
копировать
200 OK
Content-Type: text/plain
Content-Length: 200

существоватьвышеиз Примерсередина,Служитьустройство返回Понятно状态代码 200。этотда HTTP Стандартный код успеха.

Если сервер не может декодировать запрос, он может вернуть следующее:

Язык кода:bash
копировать
400 Bad Request
Content-Length: 0

SOAP-привязка

SOAP Определение нормы SOAP информацияиз структур, но не определение того, как они взаимозаменяются. Этот разрыв образуется так называемыми из "SOAP-привязка" наполнять。SOAP обязательность позволяет осуществлять эффективный обмен с использованием протокола передачи SOAP механизм информирования.

большинство SOAP Реализации предоставляют привязки для общих транспортных протоколов, таких как HTTP или SMTP

HTTP дасинхронныйизи широко используется。SOAP HTTP В запросе указано не менее двух HTTP голова:Content-Type и Content-Length

SMTP даасинхронный из, обычно существует в определенной ситуации или используется в особых обстоятельствах.

Java из SOAP Реализация обычно JMSИнформационная система Java)протокол提供Понятно特定изобязательность。

Content-Type

SOAP запрос и ответ из Content-Type Определение заголовка информативно MIME тип и используется для запросов или ответов из XML Кодировка тела текста (необязательно).

Язык кода:bash
копировать
Content-Type: MIMEType; charset=character-encoding

Пример

Язык кода:bash
копировать
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8

Content-Length

SOAP запрос и ответ из Content-Length Заголовок указывает количество байтов в теле запроса и ответа.

Язык кода:bash
копировать
Content-Length: bytes

Пример

Язык кода:bash
копировать
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

наконец

Для того, чтобы облегчить друзьям на других устройствах и платформах просмотр предыдущих статей:

Поиск общедоступной учетной записи WeChat:Let us Coding,сосредоточиться Вы можете получить последнюю статью после

Если вы нашли это полезным после прочтения, пожалуйста, поставьте лайк, соберите и подпишитесь

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose