black; FONT-SIZE: 10pt">Veja aqui alguns conceitos de Web Services e exemplos básicos de seu uso. Uma introdução detalhada aos Web Services pode ser vista no artigo de Fernando Vasconcelos Mendes, na Edição 27 da ClubeDelphi.
Um Web Service permite que aplicações localizadas na internet, escritas em linguagens diferentes, possam se comunicar e trocar informações. Esta transferência é feita com mensagens codificadas em XML, o que torna o processo independente de linguagem e de plataforma.
Da mesma maneira que, ao usarmos um browser para navegar pela web, não estamos preocupados se do outro lado está um servidor Linux, Windows ou mesmo um mainframe, ou se há um programa em Delphi ou Java gerando páginas para nós, a mesma coisa acontece com um Web Service.
Ao desenvolver um Web Service, publica-se uma interface usando a linguagem WSDL (Web Service Description Language), um arquivo XML que descreve as funções exportadas pelo serviço e suas assinaturas. Em outras palavras, o arquivo WSDL descreve os métodos disponíveis, que podem ser acessados por outros programas.
Serviço BabelFish
O site www.xmethods.net contém a localização de diversos Web Services, escritos em diversas linguagens. Lá podemos ver que existe um Web Service que acessa o BabelFish, para tradução de palavras. A WSDL para este serviço está localizada em:
www.xmethods.net/sd/2001/BabelFishService.wsdl.
Esta WSDL especifica as funções e seus parâmetros de uma maneira independente de linguagem. Veja o código na Listagem 1. Um cliente do Web Service usará esta WSDL para acessar o Web Service. No caso, a tag definitions name, na segunda linha, indica o nome do serviço, BabelFishService, que tem duas mensagens, BabelFishRequest e BabelFishResponse. A primeira tem dois parâmetros, translationmode e sourcedata, ambos do tipo String. E a segunda, um parâmetro return, também do tipo String:
<definitions name="BabelFishService" ...>
...
<message name="BabelFishRequest">
<part name="translationmode" type="xsd:string"/>
<part name="sourcedata" type="xsd:string"/>
</message>
<message name="BabelFishResponse">
<part name="return" type="xsd:string"/>
</message>
Listagem 1. WSDL para acesso ao BabelFish
<?xml version="1.0"?>
<definitions name="BabelFishService"
xmlns:tns="http://www.xmethods.net/sd/BabelFishService.wsdl"
targetNamespace="http://www.xmethods.net/sd/BabelFishService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<message name="BabelFishRequest">
<part name="translationmode" type="xsd:string"/>
<part name="sourcedata" type="xsd:string"/>
</message>
<message name="BabelFishResponse">
<part name="return" type="xsd:string"/>
</message>
<portType name="BabelFishPortType">
<operation name="BabelFish">
<input message="tns:BabelFishRequest" />
<output message="tns:BabelFishResponse" />
</operation>
</portType>
<binding name="BabelFishBinding" type="tns:BabelFishPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="BabelFish">
<soap:operation soapAction="urn:xmethodsBabelFish#BabelFish"/>
<input>
<soap:body use="encoded" namespace="urn:xmethodsBabelFish"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output> ...