Serviço Web (Web Service) é uma forma padronizada para integração entre aplicações diferentes.
Através do Web Service (WS) é possível integrar aplicações desenvolvidas com linguagens de programação diferente, pois o Web Service utiliza a troca de arquivos XML para realizar a comunicação.
Quando desenvolvemos uma aplicação com WS precisamos informar para quem for utilizar (consumir) o WS como ele funciona, para isso criamos um arquivo WSDL e enviamos este arquivo para quem for criar o cliente para o WS, após o cliente ser criado a comunicação feita entre as aplicações utiliza envelopes SOAP no formato XML.

Web Service Description Language (WSDL)
WSDL é um documento no padrão XML que descreve o funcionamento de um Web Service.
Neste documento podemos descrever:
- Onde encontrar o Web Service.
- Quais métodos possuem esse Web Service.
- Quais parâmetros os métodos recebem.
- O que os métodos retornam.
Exemplo de WSDL:
Neste exemplo temos o WSDL de um Web Service chamado ExemploWS que possui o método olaMundo que não recebe parametro e retorna uma String.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WSRI 2.1.3.1-hudson-749-SNAPSHOT. -->
<definitions targetNamespace="http://ws.exemplo.pbc/" name="ExemploWSService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.exemplo.pbc/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<ns1:Policy wsu:Id="ExemploWSPortBinding_olaMundo_WSAT_Policy" xmlns:ns1="http://www.w3.org/ns/ws-policy">
<ns1:ExactlyOne>
<ns1:All>
<ns2:ATAlwaysCapability xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/10/wsat"/>
<ns3:ATAssertion ns1:Optional="true" ns4:Optional="true" xmlns:ns4="http://schemas.xmlsoap.org/ws/2002/12/policy" xmlns:ns3="http://schemas.xmlsoap.org/ws/2004/10/wsat"/>
</ns1:All>
</ns1:ExactlyOne>
</ns1:Policy>
<types>
<xsd:schema>
<xsd:import namespace="http://ws.exemplo.pbc/" schemaLocation="ExemploWSService_schema1.xsd"/>
</xsd:schema>
</types>
<message name="olaMundo">
<part name="parameters" element="tns:olaMundo"/>
</message>
<message name="olaMundoResponse">
<part name="parameters" element="tns:olaMundoResponse"/>
</message>
<portType name="ExemploWS">
<operation name="olaMundo">
<input message="tns:olaMundo"/>
<output message="tns:olaMundoResponse"/>
</operation>
</portType>
<binding name="ExemploWSPortBinding" type="tns:ExemploWS">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="olaMundo">
<ns5:PolicyReference URI="#ExemploWSPortBinding_olaMundo_WSAT_Policy" xmlns:ns5="http://www.w3.org/ns/ws-policy"/>
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="ExemploWSService">
<port name="ExemploWSPort" binding="tns:ExemploWSPortBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>
Simple Object Access Protocol (SOAP)
SOAP é um padrão com tags XML utilizado para enviar requisições e receber respostas de um Web Service.
Exemplo de mensagem SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header/>
<S:Body>
<ns2:olaMundo xmlns:ns2="http://ws.exemplo.pbc/"/>
</S:Body>
</S:Envelope>
Exemplo de resposta SOAP:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:olaMundoResponse xmlns:ns2="http://ws.exemplo.pbc/">
<return>Ola Mundo!!!</return>
</ns2:olaMundoResponse>
</S:Body>
</S:Envelope>