<soap:Envelope xmlns:xsi='http://www.w3.org/2000/10/XMLSchema-instance'

 xmlns:xsd='http://www.w3.org/2000/10/XMLSchema'

 xmlns:soap='http://schemas.xmlsoap.org/soap/envelope'>

 <soap:Body>

  <DoSomethingResponse xmlns='http://tempuri.org/'>

   <DoSomethingResult>int</DoSomethingResult>

  </DoSomethingResponse>

 </soap:Body>

</soap:Envelope>

где length снова изменяется согласно содержимому, в этом случае int.

И снова реальный ответ через HTTP может быть значительно проще, например:

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

<?xml version='1.0'?>

<int xmlns='http://tempuri.org/'>int</int>

Это совсем простой формат XML.

Как упоминалось в начале раздела, все это можно полностью игнорировать. Только при необходимости сделать что-то действительно необычное точный синтаксис становится важным, но такие случаи выходят за рамки этой книги.

WSDL

WSDL полностью описывает службы Web, доступные методы и различные способы вызова этих методов. Все детали этого опять же не так уж важны, но общее понимание будет полезно.

WSDL имеет синтаксис, полностью соответствующий XML, и определяет службы Web по доступным методам, типам данных, используемых этими методами, форматам сообщений запросов и ответов, посылаемых методам и из методов с помощью различных протоколов (чистый SOAP, HTTP GET и т.д.), и различным связываниям между упомянутыми выше элементами.

Возможно, что наиболее важной частью файла WSDL является раздел определения типов данных. Он использует схемы XML для описания формата обмена данными и их отношениями с помощью элементов XML.

Например, метод службы Web, использованной в качестве примера в последнем разделе:

int DoSomething(string stringParam, int intParam)

будет иметь типы, объявленные для запроса следующим образом:

<?xml version='1.0' ?>

<definitions xmlns:s='http://www.w3.org/2000/10/XMLSchema'

 xmlns='http://schemas.xmlsoap.org/wsdl/'

 ... другие пространства имен ... >

 <types>

  <s:schema attributeFormDefault='qualified' elementFormDefault='qualified'

   targetNamespace='http://tempuri.org/'>

   <s:import namespace='http://www.w3.org/2000/10/XMLSchema' />

   <s:element name='DoSomething' >

    <s:complexType>

     <s:sequence>

      <s:element name='stringParam' nullable='true' type='s:string' />

      <s:element name='intParam' nullable='true' type='s:int' />

     </s:sequence>

    </s:complexType>

   </s:element>

   <s:element name='DoSomethingResponse'>

    <s:complexType>

     <s:sequence>

      <s:element name='DoSomethingResult' type='s:int' />

     </s:sequence>

    </s:complexType>

   </s:element>

   <s:element name='int' type='s:int' />

  </s:schema>

 </types>

 ... другие определения ...

</definitions>

Все, что требуется для запросов и ответов SOAP и HTTP, которые мы видели ранее, определяется этими типами, которые далее в этом файле связываются с такими операциями. Все типы определяются с помощью стандартного синтаксиса схемы XML, например:

<s:element name='DoSomethingResponse'>

 <s:complexType>

  <s:sequence>

   <s:element name='DoSomethingResult' type='s:int' />

  </s:sequence>

 </s:complexType>

</s:element>

Этот код определяет, что элемент с именем <DoSomethingResponse> имеет элемент-потомок с именем <DoSomethingResult>, который содержит целое число.

Если мы имеем доступ к коду WSDL для службы Web, то мы можем его использовать. Как мы скоро увидим, это не так уж трудно сделать.

Теперь, когда мы кратко ознакомились с SOAP и WSDL, пришло время посмотреть, как создаются и используются службы Web.

Службы Web

Обсуждение служб Web включает два вопроса:

□ Создание служб Web, которое связано с написанием служб Web и размещением их на серверах Web.

□ Использование служб Web, которое связано с применением на стороне клиента созданных служб.

Создание служб Web

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату