Что такое web служба

Что такое web служба

Индекс материала
Что такое web служба
Описание с помощью WSDL
Создание Web-служб
Все страницы

Основной концепцией Web-служб является обмен данными между компьютерами с помощью стандартизированных протоколов и сообщений. Эта идея далеко не нова. Тем не менее, за последние пару лет гиганты рынка собрались вместе, и слава богу, определили несколько основополагающих стандартов. Результатом этого стало то, что теперь возможно "говорить" с другими системами или компьютерами без вмешательства человека или без глубоких познаний того, как устроена Web-служба на другой стороне. Вы просто читаете стандарты и следуете им. Итак, Архитектура SOA - архитектура, ориентированная на службы - эта "умная фраза" очень хорошо объясняет роли, присущие приложению, ориентированному на Web-службы. Всего в нем имеется три участника;

  • Поставщик.
  • Потребитель.
  • Справочник UDDI.

Потребитель ищет услугу в справочнике, а поставщик публикует информацию об услуге в этом справочнике. Затем потребитель может запросить информацию у поставщика, который (хочется верить) с удовольствием выполнит просьбу. Наглядно эти взаимоотношения показаны на рисунке ниже. Для обмена информацией между этими тремя участниками системы SOA необходимы стандарты для решения следующих трех задач:

  • Передача сообщений.
  • Описание.
  • Поиск в справочнике UDDI.

soa

Передача сообщений с помощью SOAP

Передача сообщений обычно осуществляется с помощью протокола HTTP, потому что брандмауэры, как правило, пропускают HTTP-трафик, хотя некоторые производители аппаратных брандмауэров уже начали вносить в свои системы изменения, которые позволяют фильтровать нежелательные запросы Web-служб. Впрочем, следует отметить, что HTTP — не единственно возможный транспортный протокол. Кроме него еще используется (правда очень редко) протокол SMTP.

Протокол SOAP инкапсулирован в HTTP. Когда-то SOAP расшифровывался как Simple Object Access Protocol (простой протокол доступа к объектам). Однако с этим названием возникло две проблемы: во-первых, протокол SOAP отнюдь не простой, а во-вторых, он не имеет ничего общего с доступом к объектам. Поэтому, начиная с версии 1.2, SOAP обозначает ... 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-документа является конверт, который содержит заголовок и тело (впрочем, заголовок является необязательным и редко используется в современных приложениях). Ниже представлен пример 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 в соответствующие структуры данных РНР.



Добавить комментарий


Защитный код
Обновить






Кто на сайте
Сейчас 36 гостей онлайн