250 likes | 448 Views
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.
E N D
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>
Elementos da Interface de Serviço • 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>
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 portse 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 porta operation: Nomeia as operações de entrada e saída e ainda podem descrever erros (fault) fault: Leyout de retorno de qualquer falha
binding: Especifica o protocolo e o formato de dados para operações e mensagens definidas por uma portType 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> Input/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 relacionadas documentation: 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.