WSDL Tutorial
Ching-Long Yeh 葉慶隆
Department of Computer Science and Engineering
Tatung University
chingyeh@[Link]
httP://[Link]/chingyeh
Source
• The slides in this presentation are made from the WSDL
tutorial of W3Schools, available at
[Link]
WSDL Tutorial 2
What is Web Service
• Definition: A Web service is a software system designed
to support interoperable machine-to-machine interaction
over a network.
– It has an interface described in a machine-processable format
(specifically WSDL).
– Other systems interact with the Web service in a manner
prescribed by its description using SOAP messages, typically
conveyed using HTTP with an XML serialization in conjunction
with other Web-related standards.
From: [Link]
WSDL Tutorial 3
The General Process of Engaging a Web Service
From: [Link]
WSDL Tutorial 4
Introduction to WSDL
WSDL is an XML-based language to
define Web services and how to access
them.
What You Should Already Know
• Before you study the WSDL tutorial, you
should have a basic understanding of XML
Namespaces and XML Schema.
WSDL Tutorial 6
What is WSDL?
• Web Services Description Language
• written in XML
• an XML document
• used to describe Web services
• also used to locate Web services
• not a W3C standard
WSDL Tutorial 7
WSDL Describes Web Services
• WSDL stands for Web Services Description
Language.
• WSDL is a document written in XML.
• The document describes a Web service.
• It specifies the location of the service and the
operations (or methods) the service exposes.
WSDL Tutorial 8
WSDL will Become a W3C Standard
• WSDL is a suggestion by Ariba, IBM and Microsoft for
describing services for the W3C XML Activity on XML
Protocols.
• A W3C Note is made available by the W3C for
discussion only. Publication of this Note by W3C
indicates no endorsement by W3C or the W3C Team, or
any W3C Members.
• Work in progress at W3C indicates that WSDL might
become a W3C Working Draft before the end of 2002,
and an official Recommendation before the end of year
2003.
• 9 July 2002: W3C has released the first public Working
Draft of WSDL 1.2!
WSDL Tutorial 9
WSDL Documents
A WSDL document is just a simple XML
document. It contains set of definitions
to define a web service
The WSDL Document Structure
• A WSDL document defines a web service using
these major elements:
<portType>: The operations performed by the web service
<message>: The messages used by the web service
<types>: The data types used by the web service
<binding>: The communication protocols used by the web service
WSDL Tutorial 11
<definitions>
<types>
definition of types........
</types>
<message>
definition of a message....
</message>
<portType>
definition of a port.......
</portType>
<binding>
definition of a binding....
</binding>
</definitions>
WSDL Tutorial 12
WSDL Ports
• The <portType> element is the most important WSDL
element.
• It defines a web service, the operations that can be
performed, and the messages that are involved.
• The <portType> element can be compared to a function
library (or a module, or a class) in a traditional
programming language.
WSDL Tutorial 13
WSDL Messages
• The <message> element defines the data elements of
an operation.
• Each messages can consist of one or more parts. The
parts can be compared to the parameters of a function
call in a traditional programming language.
WSDL Tutorial 14
WSDL Types
• The <types> element defines the data type that are
used by the web service.
• For maximum platform neutrality, WSDL uses XML
Schema syntax to define data types.
WSDL Tutorial 15
WSDL Bindings
• The <binding> element defines the message format
and protocol details for each port.
WSDL Tutorial 16
A Simplified WSDL Fragment
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
WSDL Tutorial 17
WSDL Ports
A WSDL port describes the interfaces
(legal operations) exposed by a web
service.
WSDL Ports
• The <portType> element is the most important WSDL
element.
• It defines a web service, the operations that can be
performed, and the messages that are involved.
• The port defines the connection point to a web service.
• It can be compared to a function library (or a module,
or a class) in a traditional programming language. Each
operation can be compared to a function in a traditional
programming language.
WSDL Tutorial 19
Operation Types
• The request-response type is the most common
operation type, but WSDL defines four types:
• One-way: The operation can receive a message but
will not return a response
• Request-response:The operation can receive a
request and will return a response
• Solicit-response:The operation can send a request
and will wait for a response
• Notification:The operation can send a message but
will not wait for a response
WSDL Tutorial 20
One-Way Operation
• A one-way operation example:
<message name="newTermValues">
<part name="term" type="xs:string"/>
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="setTerm">
<input name="newTerm" message="newTermValues"/>
</operation>
</portType >
WSDL Tutorial 21
Request-Response Operation
• A request-response operation example:
<me<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType> WSDL Tutorial 22
WSDL Binding
WSDL bindings defines the message
format and protocol details for a web
service.
<message name="getTermRequest">
<part name="term" type="xs:string"/>
Binding
</message>
<message name="getTermResponse">
to SOAP <part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
• A request- </operation>
response </portType>
<binding type="glossaryTerms" name="b1">
operation <soap:binding style="document"
example: transport="[Link] />
<operation>
<soap:operation
soapAction="[Link]
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
WSDL Tutorial 24
</binding>
WSDL and UDDI
Universal Description, Discovery and
Integration (UDDI) is a directory service
where businesses can register and
search for Web services.
What is UDDI
• UDDI is a platform-independent framework for
describing services, discovering businesses, and
integrating business services by using the Internet.
• UDDI stands for Universal Description, Discovery and
Integration
• UDDI is a directory for storing information about web
services
• UDDI is a directory of web service interfaces described
by WSDL
• UDDI communicates via SOAP
• UDDI is built into the Microsoft .NET platform
WSDL Tutorial 26
What is UDDI Based On?
• UDDI uses World Wide Web Consortium (W3C) and
Internet Engineering Task Force (IETF) Internet
standards such as XML, HTTP, and DNS protocols.
• UDDI uses WSDL to describe interfaces to web services
• Additionally, cross platform programming features are
addressed by adopting SOAP, known as XML Protocol
messaging specifications found at the W3C Web site.
WSDL Tutorial 27
UDDI Benefits
• Any industry or businesses of all sizes can benefit from
UDDI
• Before UDDI, there was no Internet standard for
businesses to reach their customers and partners with
information about their products and services. Nor was
there a method of how to integrate into each other's
systems and processes.
• Problems the UDDI specification can help to solve:
– Making it possible to discover the right business from the
millions currently online
– Defining how to enable commerce once the preferred
business is discovered
– Reaching new customers and increasing access to current
customers
– Expanding offerings and extending market reach
– Solving customer-driven need to remove barriers to allow
for rapid participation in the global Internet economy
– Describing services and business processes
programmatically in a single, open, and secure environment
How can UDDI be Used
• If the industry published an UDDI standard for flight
rate checking and reservation, airlines could register
their services into an UDDI directory.
• Travel agencies could then search the UDDI directory to
find the airline's reservation interface.
• When the interface is found, the travel agency can
communicate with the service immediately because it
uses a well-defined reservation interface.
WSDL Tutorial 29
Who is Supporting UDDI?
• UDDI is a cross-industry effort driven by all major
platform and software providers like Dell, Fujitsu, HP,
Hitachi, IBM, Intel, Microsoft, Oracle, SAP, and Sun, as
well as a large community of marketplace operators,
and e-business leaders.
• Over 220 companies are members of the UDDI
community.
WSDL Tutorial 30
<wsdl:definitions name="nmtoken"? targetNamespace="uri">
<import namespace="uri" location="uri"/> *
<wsdl:documentation .... /> ?
<wsdl:types> ?
<wsdl:documentation .... /> ?
<xsd:schema .... /> *
</wsdl:types>
<wsdl:message name="ncname"> *
<wsdl:documentation .... /> ?
<part name="ncname" element="qname"? type="qname"?/> *
</wsdl:message>
<wsdl:portType name="ncname"> *
<wsdl:documentation .... /> ?
<wsdl:operation name="ncname"> *
<wsdl:documentation .... /> ?
<wsdl:input message="qname"> ?
<wsdl:documentation .... /> ?
The Full </wsdl:input>
WSDL <wsdl:output message="qname"> ?
<wsdl:documentation .... /> ?
Syntax(1) </wsdl:output>
<wsdl:fault name="ncname" message="qname"> *
<wsdl:documentation .... /> ?
</wsdl:fault>
WSDL Tutorial 31
</wsdl:operation>
</wsdl:portType>
<wsdl:serviceType name="ncname"> *
<wsdl:portType name="qname"/> +
</wsdl:serviceType>
<wsdl:binding name="ncname" type="qname"> *
<wsdl:documentation .... /> ?
<-- binding details --> *
<wsdl:operation name="ncname"> *
<wsdl:documentation .... /> ?
<-- binding details --> *
<wsdl:input> ?
<wsdl:documentation .... /> ?
<-- binding details -->
</wsdl:input>
<wsdl:output> ?
<wsdl:documentation .... /> ?
<-- binding details --> *
</wsdl:output>
<wsdl:fault name="ncname"> *
<wsdl:documentation .... /> ?
<-- binding details --> *
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ncname" serviceType="qname"> *
The Full WSDL <wsdl:documentation .... /> ?
Syntax(2) <wsdl:port name="ncname" binding="qname"> *
<wsdl:documentation .... /> ?
<-- address details -->
</wsdl:port>
WSDL Tutorial
</wsdl:service> 32
</wsdl:definitions>