WSDL: Web Services Description Language
WSDL é uma linguagem baseada em XML que descreve um Web Service e a maneira de acessá-lo.
WSDL é a tecnologia que vai definir todas informações que um cliente qualquer precisa conhecer para se integrar e utilizar o serviço. Um documento WSDL nada mais é do que um documento do tipo XML como os dados referentes ao serviço a ser utilizado.
Abaixo segue o esqueleto de um documento WSDL:
Os componentes de um documento WSDL são:
Definitions - É o nó raiz do documento.Todas as informações sobre o serviço devem estar contidas nesse nó.
Types - Contém os tipos de dados utilizados pelo serviço
Message - Dentro desta tag devem estar os elementos de uma operação (a operação que o serviço for executar);
portType - É considerado o elemento mais importante do WSDL pois é nele que vão estar as operações que devem ser executadas pelo serviço, e as mensagem que vão estar envolvidas.
Binding - Este elemento contém as informações sobre o formato da mensagem e detalhes do protocolo utilizado para cada operação.
Abaixo segue um exemplo simplificado de um documento WSDL:
O documento deste exemplo define a busca de uma definição para um termo em uma base de dados, ou um glossário. Repare que existem dois tipos de mensagens exibidas: getTermRequest e getTermResponse. Uma delas vai conter o termo que se deseja consultar (getTermRequest) e a outra vai conter o texto explicativo (getTermResponse).
Existem quatro tipos definidos para uma operação e são especificados pela ordem com que as tags input e output aparecem no nó operation. São eles:
one-way: - O serviço recebe uma mensagem;
Request-Response - O serviço recebe um pedido e envia uma resposta;
Solicit-Response - O serviço envia o pedido e espera por uma resposta;
Notification - O serviço envia uma mensagem.
Para o nosso exemplo, a tag binding poderia ficar da seguinte maneira:
O mais importante desse documento é que a tag operation nesse caso define cada tipo de dado que o serviço vai receber ou enviar. Cada operação definida na tag portType deve possuir um correspondente na tag binding.