25
WSDL Web Services Description Language

WSDL Web Services Description Language. Tecnologias Relacionadas Web Services SOAP (Simple Object Access Protocol) HTTP (HyperText Markup Language) UDDI

Embed Size (px)

Citation preview

WSDL

Web Services Description Language

Tecnologias Relacionadas

• Web Services• SOAP (Simple Object Access Protocol)• HTTP (HyperText Markup Language)• UDDI (Universal Description, Discovery and Integration)• XML (eXtensible Markup Language)• XSD (XML Schema Documents)

WSDL

• Uma definição:

– A WSDL é uma especificação que permite descrever Web Services segundo um formato XML.

Descrição dos Serviços

• Através da descrição do Web Services o provedor de serviços publica as especificações necessárias para o cliente invocar um serviço.

Independência de plataforma

• O cliente não precisa saber qual a linguagem do programação ou plataforma de execução em que o provedor de serviços está baseado.

• A descrição do serviço em conjunto com a infra-estrutura SOAP adjacente encapsula detalhes tanto no lado do cliente quanto no lado do provedor.

WSDL e XML

• Um documento WSDL é um documento XML que descreve Web Services como um conjunto de pontos de serviço (endpoints) que operam baseados em trocas de mensagens.

• As operações e mensagens relativas a um serviço são descritas de forma abstrata e em seguida ligados a protocolos de rede e formatos de mensagens concretos como o objetivo de definir um ponto de serviço .

WSDL é extensível

• WSDL é uma linguagem extensível e permite a descrição de pontos de serviço e suas mensagens independentemente de que formato de mensagens ou protocolo de rede é utilizado na comunicação.

Arquitetura WS

• Camadas– Descoberta – Publicação (UDDI /direta)– Descrição dos serviços (WSDL)– Troca de Mensagens baseadas em XML (SOAP)– Rede (HTTP, SMTP, FTP)

Interface e Implementação

• O uso de WSDL na arquitetura de Web Services é em geral dividido em duas partes:– interface do serviço – implementação do serviço.

• Cada parte pode ser definida de maneira independente e conseqüentemente reutilizada por outras aplicações.

Interface de Serviço

• Especificação de interface de serviço é uma descrição de serviço reutilizável que pode ser instanciada e implementada por diferentes implementações de serviços.

• Semelhante a IDL (CORBA).

Elementos da Interface de Serviço• Tipos (types)

– Definem os tipos de dados que são utilizados para descrever as mensagens. Para melhor interoperabilidade e independência de plataforma indica-se o uso de XSD (XML Schema Documents)

<types> <schema targetNamespace="http://example.com/stockquote.xsd“ xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> ...

</element> </schema>

</types>

• Mensagens (message) – Representam uma definição abstrata dos dados

que serão transmitidos. Uma mensagem é composta por diferentes partes lógicas que estão associadas com uma definição contida em um sistema de tipos.

<message name=“itemInformation”><part name=“theElement” element=“aliarForItem” />

</message>

Elementos da Interface de Serviço

• Tipos de portas (portType) – São conjuntos de operações abstratas, cada uma

contendo mensagens de entrada e saída..... > <portType name="StockQuotePortType">

<operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation>

</portType> ...

Elementos da Interface de Serviço

• Operações (operation) – Definição abstrata de uma ação que um serviço

pode executar.... > <portType name="StockQuotePortType">

<operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation>

</portType> ...

Elementos da Interface de Serviço

• Ligações (binding) – Especificam protocolos concretos além de especificações

de formatação de dados para as operações e mensagens definidas em um tipo de porta particular.

– <binding name="StockQuoteSoapBinding“ type="tns:StockQuotePortType"> <soap:binding style="document“ transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding>

Elementos da Interface de Serviço

Implementação do Serviço

• A implementação de serviço é um documento WSDL que descreve como uma interface particular é implementada por um determinado provedor de serviços.  Os elementos que fazem parte da implementação do serviço são ports e services.

Implementação do Serviço

• Porta (port) – Especifica um endereço para uma ligação,

definindo então um endpoint único. <port name="StockQuotePort“

binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/></port>

Implementação do Serviço

• Serviço (service)– Modela um Web Service agregando um

conjunto de portas relacionados entre si. <wsdl:definitions .... >

<wsdl:service name="nmtoken"> <wsdl:port .... /> </wsdl:service>

</wsdl:definitions>

WSDL

• As definições de interface e implementação de serviços podem fazer parte de um mesmo documento WSDL .

• Um documento WSDL contém elementos que possuem significado para um Web Service.

Elementos da WSDL para seu XSD

definitions documentation message portTypeinput outputfault operationservice bindingport

Estrutura de um Documento WSDL

• Um documento WSDL é um conjunto de definições. Há um elemento “definitions” na raiz e outras definições no interior

This example uses a fixed XML format instead of the SOAP encoding Example 1 SOAP 1.1 Request/Response via HTTP [2]

<?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl“ xmlns:tns="http://example.com/stockquote.wsdl“ xmlns:xsd1="http://example.com/stockquote.xsd“ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/“ xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd“ xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice">

Definitions:Define a raiz do

documento WSDL

types:Define os tipos de dados que serão utilizados para

trocar mensagens

types:Indica-se o

padrão XSD

Cont.

<element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <fault name= “..... /> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType>

message:Definição abstrata dos dados enviados

e recebidos

portType:Define um conjunto de

operações disponíveis em uma determinada portaoperation:

Nomeia as operações de entrada e saída e ainda podem descrever erros

(fault)

fault:Leyout de retorno de qualquer falha

Cont.

<binding name="StockQuoteSoapBinding“ type="tns:StockQuotePortType"> <soap:binding style="document“ transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service </documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions>

binding:Especifica o protocolo e o

formato de dados para operações e mensagens

definidas por uma portTypeInput/output:Descreve os elementos que

uma operação usa como parâmetros de entrada e

saída

service:Modela um Web Services agregando um conjunto de

portas relacionadasdocumentation:

Textos ou elementos adicionais, informativos,

utilizados para documentação

port:Especifica o

endereço de um binding

Referências

[1] Seely, Scott. SOAP: Cross Platform, Web Services Development, Using XML. New York: Prentice Hall, 2002.

[2] W3C. Web Services Description Language (WSDL) 1.1, [online], 05/06/2002, http://www.w3.org/tr/2001/NOTE=wsdl-20010315.