Что такое web служба
| Индекс материала |
|---|
| Что такое web служба |
| Описание с помощью WSDL |
| Создание Web-служб |
| Все страницы |
Основной концепцией Web-служб является обмен данными между компьютерами с помощью стандартизированных протоколов и сообщений. Эта идея далеко не нова. Тем не менее, за последние пару лет гиганты рынка собрались вместе, и слава богу, определили несколько основополагающих стандартов. Результатом этого стало то, что теперь возможно "говорить" с другими системами или компьютерами без вмешательства человека или без глубоких познаний того, как устроена Web-служба на другой стороне. Вы просто читаете стандарты и следуете им. Итак, Архитектура SOA - архитектура, ориентированная на службы - эта "умная фраза" очень хорошо объясняет роли, присущие приложению, ориентированному на Web-службы. Всего в нем имеется три участника;
- Поставщик.
- Потребитель.
- Справочник UDDI.
Потребитель ищет услугу в справочнике, а поставщик публикует информацию об услуге в этом справочнике. Затем потребитель может запросить информацию у поставщика, который (хочется верить) с удовольствием выполнит просьбу. Наглядно эти взаимоотношения показаны на рисунке ниже. Для обмена информацией между этими тремя участниками системы SOA необходимы стандарты для решения следующих трех задач:
- Передача сообщений.
- Описание.
- Поиск в справочнике UDDI.

Передача сообщений с помощью SOAP
Передача сообщений обычно осуществляется с помощью протокола HTTP, потому что брандмауэры, как правило, пропускают HTTP-трафик, хотя некоторые производители аппаратных брандмауэров уже начали вносить в свои системы изменения, которые позволяют фильтровать нежелательные запросы Web-служб. Впрочем, следует отметить, что HTTP — не единственно возможный транспортный протокол. Кроме него еще используется (правда очень редко) протокол SMTP.
Протокол SOAP инкапсулирован в HTTP. Когда-то SOAP расшифровывался как Simple Object Access Protocol (простой протокол доступа к объектам). Однако с этим названием возникло две проблемы: во-первых, протокол SOAP отнюдь не простой, а во-вторых, он не имеет ничего общего с доступом к объектам. Поэтому, начиная с версии 1.2, SOAP обозначает ... SOAP ("мыло") и больше ничего.

Спецификация SOAP 1,1 была разработана совместными усилиями компаний Microsoft, Compaq, HP, IBM и SAP и в апреле 2000 года передана консорциуму W3C. В консорциуме W3C этим стандартом занималась рабочая группа по протоколу XML (XML Protocol Working Group). Они разработали версию 1.2, которая с июня 2003 года является рекомендацией W3C. В настоящее время SOAP-расширеиие для РНР 5 поддерживает большую часть спецификаций SOAP 1.1 и 1.2.
Кстати!Возможно, вы слышали об XML-RPC. Пока компания Microsoft разрабатывала то, что впоследствии стало протоколом SOAP, один из участников команды, Дэйв Вайнер (Dave Winer) из UserLand, Inc., был разочарован общим ходом работ над стандартом и опубликовал то, что было сделано им к тому времени. Это и был XML-RPC.

Подобно обычному сообщению, SOAP-сообщение содержит три части: конверт, заголовок и тело. Основным элементом SOAP-документа является конверт, который содержит заголовок и тело (впрочем, заголовок является необязательным и редко используется в современных приложениях). Ниже представлен пример SOAP-сообщения:
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemes.xmlsoap.org/soap/envelope/"
xmlns:nsl="urn:php5unleashed-guid"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xjnlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<nsl:getGuid>
<prefix xsi:type="xsd:string">PHP_</prefix>
</nsl:getGuid>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Что здесь происходит? Вначале мы создаем SOAP конверт, который вызывает службу с указанием URN (Uniform Resource Name - унифицированного имени ресурса) phpSunleashed-guid. Затем вызывается метод getGuid с передачей ему параметра prefix со значением РНР_. SOAP-ответ этого вызова web-службы может выглядеть так, как показано ниже. Обратите внимание на возвращаемое значение — в данном случае: PHP_411f663ce6ce5.
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/scap/envelope/"
xmlns:nsl="urniphpSunleashed-guid"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http'. //schemas-xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<nsl:getGuidResponse>
<Result xsi:type="xsd:string">PHP_411f663ce6ce5</Result>
</nsl:getGuidResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Протокол SOAP позволяет выполнять намного большее, нежели просто возврат строк. Помимо всего прочего, он поддерживает пользовательские типы данных. Кроме того, вам совершенно не нужно беспокоиться об этом, поскольку о большей части технических деталей заботится PHP-модуль SOAP, который преобразовывает структуры данных SOAP в соответствующие структуры данных РНР.
Информация копипастерам
Внимание! Копирование контента с сайта, возможно только с разрешения администратора. Т.е. Меня! Я скорее всего разрешу Вам это сделать, в обмен на живую ссылку, на статью оригинал.
Что такое web служба
