SoapUI - WSDL

WSDL significa Web Services Description Language. É um formato padrão para descrever um serviço da web. WSDL foi desenvolvido em conjunto pela Microsoft e IBM. WSDL é pronunciado como 'wiz-dull' e soletrado como 'WSD-L'.

WSDL ─ Uma breve história

WSDL 1.1 foi submetido como uma nota W3C pela Ariba, IBM e Microsoft para descrever os serviços para a atividade XML W3C em protocolos XML em março de 2001.

WSDL 1.1 não foi endossado pelo World Wide Web Consortium (W3C), no entanto, acaba de lançar um rascunho para a versão 2.0 que será uma recomendação (um padrão oficial) e, portanto, endossado pelo W3C.

WSDL ─ pontos a serem observados

WSDL é um protocolo baseado em XML para troca de informações em um ambiente descentralizado e distribuído. Alguns dos outros recursos do WSDL são os seguintes -

  • As definições WSDL descrevem como acessar um serviço da web e quais operações ele executará.

  • É uma linguagem para descrever como interagir com serviços baseados em XML.

  • É parte integrante da Universal Description, Discovery, and Integration (UDDI), um registro de negócios mundial baseado em XML.

  • WSDL é a linguagem que o UDDI usa.

Uso WSDL

WSDL é freqüentemente usado em combinação com SOAP e XML Schema para fornecer serviços da web pela Internet. Um programa cliente que se conecta a um serviço da web pode ler o WSDL para determinar quais funções estão disponíveis no servidor. Quaisquer tipos de dados especiais usados ​​são incorporados ao arquivo WSDL na forma de Esquema XML. O cliente pode então usar o SOAP para realmente chamar uma das funções listadas no WSDL.

Compreendendo WSDL

WSDL divide os serviços da web em três elementos específicos e identificáveis ​​que podem ser combinados ou reutilizados uma vez definidos.

Os três principais elementos do WSDL que podem ser definidos separadamente são -

  • Types
  • Operations
  • Binding

Um documento WSDL possui vários elementos, mas eles estão contidos nesses três elementos principais, que podem ser desenvolvidos como documentos separados e, em seguida, podem ser combinados ou reutilizados para formar arquivos WSDL completos.

Neste tutorial, estamos seguindo CurrencyConverter WSDL: http://www.webservicex.net

Formato e Elementos

O WSDL de CurrencyConverter será semelhante ao seguinte -

WSDL ─ Tipo de porta

O elemento <portType> combina vários elementos de mensagem para formar uma operação unidirecional completa ou de ida e volta. Por exemplo, um <portType> pode combinar uma solicitação e uma mensagem de resposta em uma única operação de solicitação / resposta. Isso é mais comumente usado em serviços SOAP. Um portType pode definir várias operações.

Exemplo

  • O elemento portType define uma única operação, chamada ConversionRate.
  • A operação consiste em uma única mensagem de entrada ConversionRateHttpPostIn.
  • A operação para mensagem de saída é ConversionRateHttpPostOut.

Padrões de Operação

WSDL suporta quatro padrões básicos de operação -

Mão Única

O serviço recebe uma mensagem. A operação, portanto, tem um único elemento de entrada. A gramática para operação unilateral é -

<wsdl:definitions .... >  
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken"> 
         <wsdl:input name = "nmtoken"? message = "qname"/> 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

Solicitar ─ Resposta

O serviço recebe uma mensagem e envia uma resposta. A operação, portanto, tem um elemento de entrada, seguido por um elemento de saída. Para encapsular erros, um elemento opcional de falha também pode ser especificado. A gramática para uma operação de solicitação-resposta é -

<wsdl:definitions .... > 
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> 
         <wsdl:input name = "nmtoken"? message = "qname"/> 
         <wsdl:output name = "nmtoken"? message = "qname"/> 
         <wsdl:fault name = "nmtoken" message = "qname"/>* 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

Solicitar ─ Resposta

O serviço envia uma mensagem e recebe uma resposta. A operação, portanto, tem um elemento de saída, seguido por um elemento de entrada. Para encapsular erros, um elemento opcional de falha também pode ser especificado. A gramática para uma operação de solicitação de resposta é -

<wsdl:definitions .... > 
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> 
         <wsdl:output name = "nmtoken"? message = "qname"/> 
         <wsdl:input name = "nmtoken"? message = "qname"/> 
         <wsdl:fault name = "nmtoken" message = "qname"/>* 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

Notificações

O serviço envia uma mensagem. A operação, portanto, tem um único elemento de saída. A seguir está a gramática para uma operação de notificação -

<wsdl:definitions .... > 
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken"> 
         <wsdl:output name = "nmtoken"? message = "qname"/> 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

WSDL ─ Ligação e serviço

o <binding>O elemento fornece detalhes específicos sobre como uma operação portType será realmente transmitida pela rede.

  • As ligações podem ser disponibilizadas por meio de vários transportes, incluindo HTTP GET, HTTP POST ou SOAP.

  • As ligações fornecem informações concretas sobre qual protocolo está sendo usado para transferir operações portType.

  • As ligações fornecem informações sobre onde o serviço está localizado.

  • Para o protocolo SOAP, a ligação é <soap: binding> e o transporte são mensagens SOAP no topo do protocolo HTTP.

  • Você pode especificar várias ligações para um único portType.

Serviço

o <service>elemento define as portas suportadas pelo serviço da web. Para cada um dos protocolos suportados, há um elemento de porta. O elemento de serviço é uma coleção de portas.

Os clientes de serviço da Web podem aprender o seguinte com o elemento de serviço -

  • Onde acessar o serviço,
  • Por meio de qual porta acessar o serviço da web, e
  • Como as mensagens de comunicação são definidas.

O elemento de serviço inclui um elemento de documentação para fornecer documentação legível por humanos.

<wsdl:service name = "CurrencyConvertor">
   <wsdl:port name = "CurrencyConvertorSoap" binding = "tns:CurrencyConvertorSoap">
      <soap:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port>
   <wsdl:port name = "CurrencyConvertorSoap12"binding = "tns:CurrencyConvertorSoap12>
      <soap12:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port>
   <wsdl:port name = "CurrencyConvertorHttpGet" binding = "tns:CurrencyConvertorHttpGet">
      <http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port>
   <wsdl:portname = "CurrencyConvertorHttpPost"binding = "tns:CurrencyConvertorHttpPost">
      <http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port> 
</wsdl:service>