The Web Services Definition Language provides a complex, full-function mechanism for defining interfaces to Web services. Interfaces can be defined as a collection of Web service operations supported at a given end point. WSDL, a specific type of XML schema, defines a language for expressing Web services interfaces in a way that commonly available XML software can understand and use. Designed for use with SOAP as the messaging transport, WSDL includes an attribute to specify whether a given interface supports the document-oriented or the RPC-oriented interaction style.
WSDL is difficult to read and to understand, but Web service toolkits typically generate and consume WSDL files automatically. Interfaces from established distributed computing technologies, such as Java classes, JavaBeans, CORBA objects, Visual Basic classes, and C# classes, translate easily into WSDL, although they might not be defined at the level of granularity appropriate for Web services.
WSDL contains a description of the data types and structures used in Web services messages, as well as information required for mapping the Web service definition onto an underlying execution environment. The three main parts of WSDL—message types, operations, and bindings—can be defined in separate documents and combined at execution time. By default, message types use XML schemas for data typing and structuring. Operations typically map to method or program names implementing the Web service. Bindings describe the protocols and transports used to send the data to the operation.