Web services allow for integration between organizations and within organizations through standardized XML messaging over the internet. They use service-oriented architecture and common XML technologies like SOAP, WSDL, and UDDI. SOAP is an XML-based messaging protocol that forms the foundation for web services by providing a way to describe operations and exchange messages over networks using XML.
2. What are “Web Services”?
IBM
“A Web service is an interface that describes a
collection of operations that are network accessible
through standardized XML messaging”
Microsoft: XML Web Services
“.. expose useful functionality to Web users through
a standard Web protocol”
“.. provide a way to describe their interfaces in
enough detail to allow a user to build a client
application to talk to them”
“.. are registered so that potential users can find
them easily”
3. Why Web Services?
From business standpoint
Integration
○ Within an organization
○ Between companies
○ Allows time/cost efficiencies
Purchase orders
Answering inquiries
Processing shipment requests
○ Do this without locking in to a single partner
4. Web Service Architecture
Service-Oriented Architecture
Service
Registry
Service
Requestor
Service
Provider
Find Publish
Bind
5. Architecture II
• All the technologies are XML based …
Registry
(UDDI)
Service
Requestor
Service
Provider
Find
Publish
Bind
(SOAP)
(SOAP)
(WSDL)
6. XML Leveraging Features
XML Namespaces
Collision
○ Common XML element names
Application specific or embedded in message?
Allows composition of multiple XML
documents
○ Identifies elements belonging to the same
document type
7. XML Leveraging Features II
XML Schemas
Alternative to DTDs for describing document
structure
Written in XML
○ Simple types
○ Complex types
Reusable
○ Intended to be used with namespaces
8. SOAP
Simple Object Access Protocol
Web service messaging and invocation
2nd Generation XML Protocol
Takes advantage of
○ XML Namespaces
○ XML Schema
9. First Generation XML
Protocol Based on XML 1.0
Example: XML-RPC
Introduced by Userland in 1998
Uses HTTP as underlying transport
<methodResponse>
<params>
<param>
<value>
<string>twenty-eight</string>
</value>
</param>
</params>
</methodResponse>
Call Response
<methodCall>
<methodName>NumberToText</methodName>
<params>
<param>
<value><i4>28</i4></value>
</param>
</params>
</methodCall>
10. First Gen. XML Protocol
Issues
Extensibility
All protocol architects had to agree for changes
Avoid with namespaces
Datatyping
Single DTDs
○ Limited in use of XML elements
○ Descriptive nature of XML sacrificed
XML schema is a better solution
11. SOAP History
1998 • Term SOAP coined at Microsoft
1999 • Microsoft works with BizTalk to release SOAP 0.9
• Submitted to IETF
• SOAP 1.0 released in December
2000 • SOAP 1.1 submitted to W3C with IBM
• IBM releases a Java SOAP implementation
• Sun starts work on Web services in J2EE
2001
• SOAP 1.2 released by XML Protocol working group at
W3C
Currently, about 80+ SOAP implementations available
including Apple…
12. SOAP Messaging Layers
App API
SOAP, XML Processing
App API
SOAP, XML Processing
SOAP Message SOAP Message
HTTP HTTP
Developer
SOAP Service
Provider
HTTP
Client ProviderView
14. SOAP Envelope
Root element
Mandatory
Does not expose any protocol versions
Protocol version is the URI of SOAP envelope
namespace
encodingStyle attribute for complex types
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle=http://schemas.xmlsoap.org/soap/encoding/
xmlns="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
15. SOAP Header
Optional
Allows packaging of information
orthogonal to message
Transactions
○ Authentication information
○ Account information
SOAP-ENV:mustUnderstand
16. SOAP-ENV:mustUnderstand
Attribute for Header element
Value 0 – skip this element if it doesn’t
make sense
Value 1 – must fail if it doesn’t make sense
Ensures recipients be aware of important
protocol extensions
<SOAP-ENV:Header>
<t:client xmlns:t=“Some-URI”
SOAP-ENV:mustUnderstand=“0”>
sacharya@inktomi.com
</t:client>
</SOAP-ENV:Header>
17. SOAP Body
Can contain arbitrary XML
Conventions for
RPCs
Faults
○ Faultcode – lookup string
○ Faultstring – human readable string
○ Faultactor – where in the message path
○ Detail – optional
Data encoding
18. Data encoding in SOAP
SOAP provides default encoding schema
Why reinvent the wheel?
Simple data types
Use “xsi:type”
String, floats etc
Complex data types
SOAP arrays
Structs: compound types
Data referencing
Href and id attributes
19. Data encoding in SOAP
Binary data
Base64 encoding
Can roll your own schema
encodingStyle
Interoperability issues
21. Other SOAP Protocol
Bindings
HTTPS
Similar to HTTP
○ Use POST
○ Return 200 for success
○ 500 for failure + SOAP fault
○ SOAPAction HTTP header for hint
○ MIME media type: text/html
SMTP
SOAP messages with Attachments