2010-12-22 18 views
31

... ambos parecen definir una operación y su mensaje. No lo entiendo del todo, por qué ambos son necesarios.WSDL: cuál es la diferencia entre <binding> y <portType>

+1

Esta es una buena pregunta, no creo que ninguna de las respuestas a continuación parezca abordarla. Distinguirlos solo tiene sentido si hay una relación de muchos a muchos, lo que parece ser imposible cuando la etiqueta solo puede hacer referencia a un portType. Probablemente haya una razón histórica, en lugar de una práctica. –

Respuesta

8

Encuadernación define la interfaz abstracta de un servicio web.
Conceptualmente es como una interfaz Java, ya que define un tipo abstracto y métodos relacionados.
En WSDL el tipo de puerto se implementa por los elementos de unión y de servicio que indican los protocolos, los esquemas de codificación, etc., para ser utilizado por una implementación de servicio web
es decir, el enlace especifica detalles de implementación concreta y esencialmente asigna un portType a un conjunto de protocolos (HTTP y SOAP) estilos de mensaje (Documento/RPC) y codificaciones (literal)
¿Está clara la distribución ahora?

+6

¿Debe leer la línea 1 "El tipo de puerto define la interfaz abstracta de un servicio web"? –

21

Interfaces (WSDL: portType)

El elemento WSDL portType define un grupo de operaciones, también conocida como una interfaz en la mayoría de entornos. Cada elemento de operación contiene una combinación de elementos de entrada y salida, y cuando tiene un elemento de salida también puede tener un elemento de falla. El orden de estos elementos define el patrón de intercambio de mensajes (MEP) (unidireccional, Solicitud - Respuesta, etc.)

enter image description here

WSDL: unión

el elemento de enlace WSDL describe los detalles concretos de usar un portType particular con un protocolo dado.

enter image description here

4

portType
un único servicio Web puede soportar un número de diferentes protocolos. La estructura de los datos depende del protocolo que use para invocar el servicio web. Debido a esto, necesita una forma de asignar desde las operaciones al endpoints desde donde se puede acceder. El elemento portType elemento se encarga de este mapeo.

Puede colocar una definición de portType para cada uno de los protocolos disponibles para este servicio web. Por ejemplo, puede tener definiciones de portType individuales para usar SOAP, HTTP-POST y HTTP-GET. El nombre de la operación es el método disponible del servicio web.

vinculante
Se puede definir la forma en que el usuario final se une a un puerto donde la operación se puede obtener. Usted hace esto usando el elemento.

14

portType (análogos a la interfaz Java)

  • PortType es una parte de la abstracción WSDL.
  • Un conjunto abstracto de operaciones admitidas por uno o más puntos finales.

vinculante

  • La unión es una parte concreta del WSDL.
  • Describe cómo se invoca la operación especificando el protocolo concreto y las especificaciones de formato de datos para las operaciones y los mensajes. unión
  • bindings are three types

    1. SOAP Binding:
      de SOAP permite que cualquiera, ya sea con document or rpc styleencoding o literal. La codificación indica cómo debe codificarse un valor de datos en un formato XML (estas reglas especifican cómo "algo" se codifica/serializa a XML y luego se decodifica/deserializa de XML a "algo"). Literal significa que los datos se serializan de acuerdo con un esquema (esto es simplemente datos XML). Con el tipo de transporte HTTP, JMS, SMTP ...

    2. HTTP GET & POST binding:
      WSDL incluye un enlace para HTTP GET de 1.1 y verbos de la POST con el fin de describir la interacción entre un navegador web y un sitio web.

    3. MIME binding: WSDL incluye una forma de vincular tipos abstractos a mensajes concretos en algún formato MIME.


enter image description here

En WSDL 2.0:

  • PortTypes cambiado de nombre a las interfaces
  • Puertos renombraron a los puntos finales
  • mensaje Fuera construye

Source


Enlaces útiles

0

WSDL: portType va con WSDL: operación es decir, estamos en los reinos de los mensajes y XML como tales

pero WSDL: unión va con jabón : vinculante y jabón: operación es decir, estamos en el ámbito de la codificación, direcciones, encabezados y rpc

v.g. a partir de: http://www.w3.org/TR/wsdl#_soap-b

<binding name="StockQuoteSoap" type="tns:StockQuotePortType"> 
     <soap:binding style="document" transport="http://example.com/smtp"/> 
     <operation name="SubscribeToQuotes"> 
      <input message="tns:SubscribeToQuotes"> 
       <soap:body parts="body" use="literal"/> 
       <soap:header message="tns:SubscribeToQuotes" part="subscribeheader" use="literal"/> 

.....

<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> 
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> 
    <operation name="GetTradePrice"> 
     <soap:operation soapAction="http://example.com/GetTradePrice"/> 
     <input> 
      <soap:body use="encoded" namespace="http://example.com/stockquote" 
         encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> 

...

y en el apartado 3.2 todos los posibles detalles sobre nivel inferior cosas comunicación:

extiende el enlace SOAP WSDL con los siguientes elementos de extensión:

<definitions .... > 
    <binding .... > 
     <soap:binding style="rpc|document" transport="uri"> 
     <operation .... > 
      <soap:operation soapAction="uri"? style="rpc|document"?>? 
      <input> 
       <soap:body parts="nmtokens"? use="literal|encoded" 
          encodingStyle="uri-list"? namespace="uri"?> 
       <soap:header message="qname" part="nmtoken" use="literal|encoded" 
          encodingStyle="uri-list"? namespace="uri"?>* 
       <soap:headerfault message="qname" part="nmtoken" use="literal|encoded" 
            encodingStyle="uri-list"? namespace="uri"?/>* 
       <soap:header>         
      </input> 
      <output> 
       <soap:body parts="nmtokens"? use="literal|encoded" 
          encodingStyle="uri-list"? namespace="uri"?> 
       <soap:header message="qname" part="nmtoken" use="literal|encoded" 
          encodingStyle="uri-list"? namespace="uri"?>* 
       <soap:headerfault message="qname" part="nmtoken" use="literal|encoded" 
            encodingStyle="uri-list"? namespace="uri"?/>* 
       <soap:header>         
      </output> 
      <fault>* 
       <soap:fault name="nmtoken" use="literal|encoded" 
          encodingStyle="uri-list"? namespace="uri"?> 
      </fault> 
     </operation> 
    </binding> 

    <port .... > 
     <soap:address location="uri"/> 
    </port> 
</definitions> 
Cuestiones relacionadas