Transcript Slide 1

SOAP
‘the protocol formerly known as
Simple Object Access Protocol’
Team Pluto
Bonnie, Brandon, George, Hojun
Overview







What is SOAP?
SOAP History
Message Exchange Pattern
SOAP Structure
Demo
Alternatives
Q&A
What is SOAP?

Original Acronym:
Simple Object Access Protocol
(no longer used as it was misleading; dropped in 1.2)



It is a lightweight communication protocol for exchanging
information in a distributed environment
SOAP uses XML and HTTP
It can invoke methods, servers,
services and objects via the Internet
Advantages

Platform and language independent


Simple and extensible



Allow programs written in different languages running on
different platforms to communicate with each other
Minimum functionality
Format is simple and human-readable
Standard HTTP protocol is ‘firewall friendly’
History
SOAP follows the principle:
Invent no new technology!
Using two commonly deployed technologies
(XML and HTTP), SOAP facilitates
interoperability between
programs and platforms
Message Exchange Pattern
Remote Procedure Call

RPC has two
types of messages


Request
- Client sends a request to the server to invoke a service
Response
- Server sends back the result
3-Part Structure of a SOAP Message

Envelope



Header (optional)


Defines the XML document as a SOAP message
Must have the namespace
http://www.w3.org/2001/12/soap-envelope
Holds control information
Body


Contains the data you are trying to send
Can have a <fault> element to
handle and carry error messages
Request Message
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="urn:testns“
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getProf>
<course>470</course>
</ns1:getProf>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Response Message
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="urn:testns"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getProfResponse>
<Result>Anthony</Result>
</ns1:getProfResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Demo

SOAP Client written in PHP



Profname.wsdl
Client Source
Server Response Result Shown
Demo

SOAP Client written in PHP




Source Code for Server Side
Source Code for Client Side
Request and response messages captured
and displayed
Client connect to unknown server
Problems with SOAP

Data needs to be converted to strings
(instead of being transmitted in binary form)

Lengthy XML messages are slower to transmit
(less of an issue with short messages)

You have to do more work
(SOAP does not define how receiving a message
will create an instance of the object
and execute the method)
Alternatives

XML-RPC




Designed by Dave Winer of UserLand Software with
Microsoft, 1998
SOAP's predecessor
Advantages:
 Simple and minimal protocol for remote execution
of java code (entire description can be printed on
two pages of paper)
 Easy to use
Disadvantages:
 Too simple; unable to
handle complex interactions
 Mostly replaced by SOAP
Alternatives

CORBA
(Common Object Request Broker Architecture)

Advantage:



Most complete RPC protocol
Good for implementation in server farms or large groups of
homogenous systems on a dedicated network
Disadvantage:



Too complex for most applications
Difficult to implement with a high
number of clients
Though implemented on a variety
of platforms, in practice any
given deployment needs to be on
a single consistent implementation
Alternatives

DCOM
(Distributed Component Object Model)


Only for Windows
Advantage:


Highly efficient and flexible
Disadvantage:



Very complicated to configure
Hard to work in modern web environment
Deprecated by .NET
Thank you!
Are there any points we can
clarify for you?