Web Services
Web services are web application components.
WSDL
- WSDL stands for Web Services Description Language
- WSDL is an XML-based language for describing Web services.
- WSDL is a W3C recommendation
SOAP
- SOAP stands for Simple Object Access Protocol
- SOAP is an XML based protocol for accessing Web Services.
- SOAP is based on XML
- SOAP is a W3C recommendation
A SOAP message is a XML document which is used to transmit your data. WSDL is an XML document which describes how to connect and make requests to your web service.
Basically SOAP messages are the data you transmit, WSDL tells you what you can do and how to make the calls.
In a simple terms if you have a web service of calculator. WSDL tells about the functions that you can implement or exposed to the client. For example: add, delete, subtract and so on. Where as using SOAP you actually perform actions like doDelete(), doSubtract(), doAdd(). So SOAP and WSDL are apples and oranges. We should not compare them. They both have their own different functionality.
for example: Lifted from stackoverflow,
SOAP Request:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetBookPrice xmlns:m="http://namespaces.my-example-book-info.com"> <ISBN>978-0451524935</ISBN> <Title>1984</Title> <NumPages>328</NumPages> </m:GetBookPrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
SOAP Response,
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetBookPriceResponse xmlns:m="http://namespaces.my-example-book-info.com"> <CurrentPrice>8.99</CurrentPrice> <Currency>USD</Currency> </m:GetBookPriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
WSDL Sample,
<wsdl:types> <!-- all type declarations are in a chunk of xsd --> <xsd:schema targetNamespace="http://namespaces.my-example-book-info.com" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <xsd:element name="GetBookPrice"> <xsd:complexType> <xsd:sequence> <xsd:element name="ISBN" type="string"/> <xsd:element name="Title" type="string"/> <xsd:element name="NumPages" type="integer"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="GetBookPriceResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="CurrentPrice" type="decimal" /> <xsd:element name="Currency" type="string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types>
REST