Introduction to Web Services
Protocols
Communication and standards
Efficient (or indeed any)
communication is dependent on a
shared vocabulary and grammar.
Because web services deals with
inter-organisation communication
these must be universal standards.
Talk title date 2
Underlying standards
The basic standards for web services are:
XML (Extensible Markup Language)
SOAP (simple object access protocol)
WSDL (web services description language)
UDDI (universal description, discovery and
integration)
Talk title date 3
The state of standards
XML 1.0 fairly stable, although Schema are in the process
of replacing DTDs (currently Schema 1.1 being worked on).
SOAP 1.2
WSDL 2.0 (coming out, 1.2 current)
UDDI version 3 (Aug 2003)
BPEL 1.1 (Business Process Execution Language)
choreography description language (web services work
flows)
started January 2003.
Standards are still volatile and in the process of development.
Talk title date 4
Web Services Architecture
Web Services involve three major roles
Service Provider
Service Registry
Service Consumer
Three major operations surround web
services
Publishing – making a service available
Finding – locating web services
Binding – using web services
Talk title date 5
Making a service available (1)
In order for someone to use your service
they have to know about it.
To allow users to discover a service it is
published to a registry (UDDI).
To allow users to interact with a service you
must publish a description of it’s interface
(methods & arguments).
This is done using WSDL.
Talk title date 6
Making a service available (2)
Once you have published a description of your
service you must have a host set up to serve it.
A web server is often used to deliver services
(although custom application – application
communication is also possible).
This is functionality which has to be added to the
web server. In the case of the apache web server a
‘container’ application (Tomcat) can be used to make
the application (servlet) available to apache
(deploying).
Talk title date 7
The old transfer protocols are
still there.
Like the grid architecture web
services is layered on top of existing,
mature transfer protocols.
HTTP, SMTP are still used over TCP/IP
to pass the messages.
Web services, like grids, can be seen
as a functionality enhancement to the
existing technologies.
Talk title date 8
XML
All Web Services documents are
written in XML
XML Schema are used to define the
elements used in Web Services
communication
Talk title date 9
SOAP
Actually used to communicate with the Web
Service
Both the request and the response are SOAP
messages
The body of the message (whose grammar
is defined by the WSDL) is contained within
a SOAP “envelope”
“Binds” the client to the web service
Talk title date 10
WSDL
Describes the Web Service and
defines the functions that are exposed
in the Web Service
Defines the XML grammar to be used
in the messages
Uses the W3C Schema language
Talk title date 11
UDDI
UDDI is used to register and look up
services with a central registry
Service Providers can publish information
about their business and the services that
they offer
Service consumers can look up services that
are available by
Business
Service category
Specific service
Talk title date 12
Section
XML
Talk title date 13
What is XML
XML stands for extensible markup language
It is a hierarchical data description language
It is a sub set of SGML a general document
markup language designed for the American
millitary.
It is defined by w3c.
Talk title date 14
How does XML differ from
HTML?
HTML is a presentation markup language –
provides no information about content.
There is only one standard definition of all of the
tags used in HTML.
XML can define both presentation style and give
information about content.
XML relies on custom documents defining the
meaning of tags.
Talk title date 15
What is a Schema?
A schema is the definition of the meaning of
each of the tags within a XML document.
Analogy: A HTML style sheet can be seen as
a limited schema which only specifies the
presentational style of HTML which refers to
it.
Example: in HTML the tag <strong> pre-
defined. In XML you would need to define
this in the context of your document.
Talk title date 16
A minimal XML document
value
<?xml
<?xmlversion=“1.0”
version=“1.0”?>
?>
<document
<documentname=“first”>Jim</document>
name=“first”>Jim</document>
A tag
An attribute Closing tag
Talk title date 17
Valid and well formed
A correct XML document must be both valid
and well formed.
Well formed means that the syntax must be
correct and all tags must close correctly (eg
<…> </…>).
Valid means that the document must conform
to some XML definition ( a DTD or Schema).
(Otherwise there can be no definition of what
the tags mean)
Talk title date 18
Using namespaces in XML
To fully qualify a namespace in XML write the
namespace:tag name. eg.
<my_namespace:tag> </my_namespace:tag>
In a globally declared single namespace the qualifier
may be omitted.
More than one namespace:
<my_namespace:tag> </my_namespace:tag>
<your_namespace:tag>
</your_namespace:tag>
can co-exist if correctly qualified.
Talk title date 19
Namespaces in programming
languages
In C/C++ defined by #includes and classes
(eg. myclass::variable).
In PERL defined by package namespace,
$local and $my (eg. myPackage::variable).
In JAVA defined by includes and package
namespace (eg. [Link])
Defines the scope of variables
Talk title date 20
Schema
<?xml
<?xmlversion="1.0"?>
version="1.0"?>
<xs:schema
<xs:schemaxmlns:xs=[Link]
xmlns:xs=[Link]
xmlns=“document"
xmlns=“document">>
<xs:element name = “DOCUMENT”>
<xs:element name = “DOCUMENT”>
<xs:element name=“CUSTOMER"> </xs:element> Simple schema
<xs:element name=“CUSTOMER"> </xs:element>
</xs:element>
</xs:element> saved as [Link]
</xs:schema>
</xs:schema>
<?xml version=“1.0”?>
<?xml version=“1.0”?>
<DOCUMENT
<DOCUMENTxmlns=“document”
xmlns=“document”
xmlns:xsi="[Link]
xmlns:xsi="[Link]
Xsi:schemaLocation=“[Link]”> XML document
Xsi:schemaLocation=“[Link]”>
<DOCUMENT>
<DOCUMENT> derived from
<CUSTOMER>sam smith</CUSTOMER>
<CUSTOMER>sam smith</CUSTOMER>
<CUSTOMER>sam smith</CUSTOMER> schema.
<CUSTOMER>sam smith</CUSTOMER>
</DOCUMENT>
</DOCUMENT>
Talk title date 21
Section
SOAP
Talk title date 22
Request Response Web
Services
Currently the most common implementation
of Web Services
Work in a very simple ‘request – response’
paradigm
For Example:
A Weather Service– simple request for weather in an area, simple
response with the weather report
An Airline special offers service – travel agents would simply make
requests for latest offers and would receive the offers as a
response
Talk title date 23
SOAP messages
SOAP provides a standard ‘envelope’ within
which a message can be delivered.
SOAP is mechanism (protocol) for transferring
information (messages) between applications
which may be widely distributed.
SOAP says nothing about the content of the
message – the sender and the receiver must
understand the message for themselves.
SOAP is part of a communication stack.
Talk title date 24
SOAP Structure(1)
Transport protocol
Each SOAP message MIME header
will have: SOAP ENVELOPE
An Envelope
SOAP HEADER
A Header (optional)
A Body
The Body may contain SOAP BODY
a Fault element
FAULT
Talk title date 25
SOAP Structure(2)
The envelope wraps the entire soap document
The header contains allows additional information to
be passed as well as the body of the document – e.g.
authentication
The body element contains the core of the SOAP
document – this will contain either the RPC call or
the XML message itself
The fault information will contain any exception
information
Talk title date 26
Anatomy of a SOAP message
<?xml version=‘1.0’ encoding=‘UTF-8’?>
<SOAP-ENV:Envelope xmlns:SOAP_ENV=“[Link]
xmlns:xsi=“[Link]
xmlns:xsd=“[Link]
<SOAP-ENV:Header>
</SOAP-ENV:Header
<SOAP_ENV:Body>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Talk title date 27
SOAP protocol binding
SOAPAction = “urn:soaphttpclient-action-uri”
Host = localhost
Content-Type = text/xml; charset=utf-8
Content-Length = 701
<SOAP-ENV:Envelope xmlns:SOAP_ENV=“[Link]
xmlns:xsi=“[Link]
xmlns:xsd=“[Link]
</SOAP-ENV:Envelope>
Talk title date 28
SOAP RPC
SOAP RPC messages contain XML that
represents a method call or method
response
The SOAP XML will be converted into
a method call on the server and the
response will be encoded into SOAP
XML to be returned to the client
Talk title date 29
SOAP Faults
SOAP errors are handled using a
specialised envelope known as a Fault
Envelope
A SOAP Fault is a special element
which must appear as an immediate
child of the body element
<faultcode> and <faultstring> are
required.
Talk title date 30
A SOAP fault
<?xml version=‘1.0’ encoding=‘UTF-8’?>
<SOAP-ENV:Envelope
xmlns:SOAP_ENV=“[Link]
xmlns:xsi=“[Link]
xmlns:xsd=“[Link]
<SOAP_ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Test fault</faultstring>
<faultactor>/soap/servlet/rpcrouter</faultactor>
<detail>
..
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Talk title date 31
SOAP Attachment
Transport protocol
Large quantities or MIME header
binary data may not fit
well into a XML SOAP SOAP ENVELOPE
message. SOAP HEADER
In which case it can be
sent ‘out of band’ by SOAP BODY
attaching it to a SOAP FAULT
message
Analogy : email Attachment
attachments.
Talk title date 32
Attaching a file to a SOAP
message
To add a file to a SOAP message a tag is added
within the body of the message.
<?xml version=‘1.0’ encoding=‘UTF-8’?>
<SOAP-ENV:Envelope
xmlns:SOAP_ENV=“[Link]
xmlns:xsi=“[Link]
xmlns:xsd=“[Link]
<SOAP_ENV:Body>
<attachment href=“{URL}”/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Talk title date 33