Почему WSDL вводит wsdl:message?

Почему WSDL вводит wsdl:message? А части сообщения?

Какое преимущество они могут принести прямому использованию XSD в параметрах операций (вход, выход, ошибка)?

Как они (сообщения wsdl с частями сообщения wsdl) могут быть более абстрактными, чем XSD?

Почему это не организовано, например, так:

<operation name="GetEndorsingBoarder"> 
  <input type="xsd:string"/> 
  <output type="xsd:string, xsd:int, xsd:boolean"/> 
  <fault "type="xsd:string""/> 
</operation>

2 ответа

Решение

Я понял:

Сообщения не просто указывают параметры операции.

Сообщения и их части приведены в привязках. Должна быть возможность связывать разные части по-разному:

<message name="m1">
    <part name="body" element="tns:GetCompanyInfo"/>
</message>

<message name="m2">
    <part name="body" element="tns:GetCompanyInfoResult"/>
    <part name="docs" type="xsd:string"/>
    <part name="logo" type="tns:ArrayOfBinary"/>
</message>

<portType name="pt1">
    <operation name="GetCompanyInfo">
       <input message="m1"/>
       <output message="m2"/>
    </operation>
</portType>

 <binding name="b1" type="tns:pt1">
        <operation name="GetCompanyInfo">
           <soap:operation soapAction="http://example.com/GetCompanyInfo"/>
           <input>
               <soap:body use="literal"/>
           </input>
           <output>
               <mime:multipartRelated>
                   <mime:part>
                       <soap:body parts="body" use="literal"/>
                   </mime:part>
                   <mime:part>
                       <mime:content part="docs" type="text/html"/>
                   </mime:part>
                   <mime:part>
                       <mime:content part="logo" type="image/gif"/>
                       <mime:content part="logo" type="image/jpeg"/>
                   </mime:part>
               </mime:multipartRelated>
           </output>
        </operation>
    </binding>

Я пропустил это, так как привязки "не SOAP 'literal'" настолько редки.

XSD описывает DATA аспекты, например, аспекты данных вызова веб-службы, тогда как WSDL описывает назначение веб-сервисов (вызовы методов). Обычно вы не можете определить вызовы методов только из ваших данных.

Ознакомьтесь с ответами Cheeso и Marc на создание WSDL из файла XSD

РЕДАКТИРОВАТЬ: источник

message описывает данные, которыми обмениваются между поставщиком и потребителем веб-сервисов, и каждый веб-сервис имеет два сообщения: 1) вход: параметры веб-сервиса 2) вывод: возврат данных из веб-сервиса

каждый message имеет ноль или более part параметры (по одному на каждый параметр функции веб-службы) Каждый part Параметр связывается с конкретным типом, определенным в types элемент контейнера.

   <message name="SayHelloRequest">
      <part name="firstName" type="xsd:string"/>
   </message>
   <message name="SayHelloResponse">
      <part name="greeting" type="xsd:string"/>
   </message>

Здесь определены два элемента сообщения. Первый представляет сообщение запроса SayHelloRequest, а второй представляет ответное сообщение SayHelloResponse.

Каждое из этих сообщений содержит один элемент part. Для запроса часть определяет параметры функции; в этом случае мы указываем один параметр firstName. Для ответа часть определяет возвращаемые значения функции; в этом случае мы указываем одно возвращаемое значение приветствия.

Другие вопросы по тегам