Title: SOAP Simple Object Access Protocol
1SOAP(Simple Object Access Protocol)
- Matt Brodie
- March 20th 2006
2- "To help developers build Web services and
link heterogeneous components over the Internet,
Microsoft worked with industry experts to create
the Simple Object Access Protocol. SOAP provides
an open, extensible way for applications to
communicate using XML-based messages over the
Web, regardless of what operating system, object
model or language particular applications may
use. SOAP facilitates universal communication by
defining a simple, extensible message format in
standard XML and thereby providing a way to send
that XML message over HTTP. Microsoft is
soliciting industry feedback on version 0.9 of
the SOAP specification. . ." MS announcement,
Sept 13 1999"
3SOAPs designers
- Initial development done by a team including
representatives from - DevelopMentor
- IBM
- Lotus
- Microsoft
- UserLand
4SOAPs maintenance
- Currently under the auspices of the W3C XML
Protocol Working Group, which includes
representatives of - BEA Systems
- IBM
- Microsoft
- Sun Microsystems
- Systinet
- Not to mention ATT, DaimlerChrysler, Intel, and
Fujitsu
5some definitions
- "SOAP is a protocol specification for invoking
methods on servers, services, components and
objects. SOAP codifies the existing practice of
using XML and HTTP as a method invocation
mechanism. The SOAP specification mandates a
small number of HTTP headers that facilitate
firewall/proxy filtering. The SOAP specification
also mandates an XML vocabulary that is used for
representing method parameters, return values,
and exceptions." DevelopMentor
6continued
- The Simple Object Access Protocol (SOAP)
facilitates interoperability among a wide range
of programs and platforms, making existing
applications accessible to a broader range of
users. SOAP combines the proven Web technology
of HTTP with the flexibility and extensibility of
XML. perfectxml.com
7from the original MS press release
- SOAP provides an open, extensible way for
applications to communicate using XML-based
messages over the Web, regardless of what
operating system, object model or language
particular applications may use. SOAP facilitates
universal communication by defining a simple,
extensible message format in standard XML and
thereby providing a way to send that XML message
over HTTP. Microsoft
8the official definition
- SOAP is a lightweight protocol intended for
exchanging structured information in a
decentralized, distributed environment. SOAP uses
XML technologies to define an extensible
messaging framework, which provides a message
construct that can be exchanged over a variety of
underlying protocols. The framework has been
designed to be independent of any particular
programming model and other implementation
specific semantics. W3C
9repetitious words
- Extensible
- Platform-nonspecific
- Utilizes existing software
- Facilitates communication
- Simple
10a bit of history
- Sometime in 1999 idea created, work started
- May 8, 2000 submitted to W3C
- June 24, 2003 published as a W3C recommendation
- Now, development is focused on common suite of
SOAP extensions to add reliability, security,
etc. - Global XML Web Services Architecture (GXA)
11SOAPs predecessors
- DCOM and CORBA
- Remote Procedure Call (RCP) Protocols
- Poorly designed for Web Services
- Initially, SOAP was designed to make DCOM and
CORBA work over the internet.
12simple depiction of SOAP in action
13SOAP
- is a format for one-way communication
- describes how a message should be transported
through the web - governs which portions of the document should be
read and by whom - is a format describing how the client turns the
message into an RPC call and converts it into a
SOAP reply
14SOAP message structure
- HTTP binding
- directs the message
- Envelope
- always the root element, it helps the server
identify the message as SOAP, and it is defined
by its own schema SOAP-ENV - Header (optional)
- specifying use
- Adds features to the SOAP message such as
authentication, transaction management, payment,
message routes, etc - Body
- containing the payload
15very simple example
ltEnvelopegt ltHeadergt lttransIdgt345lt/transId
gt lt/Headergt ltBodygt ltAddgt
ltn1gt3lt/n1gt ltn2gt4lt/n2gt lt/Addgt
lt/Bodygt lt/Envelopegt
16HTTP binding
- directs SOAP message across HTTP
- always a POST format
- content-type is always text/xml
- includes the special header SOAPAction
- this is not mandatory, supposed to express the
function of the message
17HTTP binding for a request POST
/string_server/Object17 HTTP/1.1 Host
209.110.197.2 Content-Type text/xml Content-Lengt
h nnn
Response 200 OK Content-Type text/xml Content-Le
ngth nnn
18previous example, fleshed out
ltSOAP-ENVEnvelope xmlnsSOAP-ENVhttp//sche
mas.xmlsoap.org/soap/envelope/
SOAP-ENVencodingStyle"http//schemas.xmlsoap.org
/soap/encoding/gt ltSOAP-ENVHeadergt
ltttransId xmlnsthttp//a.com/transgt345lt/ttra
nsIdgt lt/SOAP-ENVHeadergt ltSOAP-ENVBodygt
ltmAdd xmlnsmhttp//a.com/Calculatorgt
ltn1gt3lt/n1gt ltn2gt4lt/n2gt
lt/mAddgt lt/SOAP-ENVBodygt lt/SOAP-ENVEnvelopegt
19intermediaries
- intermediaries act as soap receivers and senders
- they often process messages and send them on
- the SOAP message is encoded with instructions for
the receiver will deal with the message - it may ignore certain sections of the body, if it
is told to in the header
20drawbacks
- dozens of SOAP toolkits being used to build, many
interpret message differently - SOAP is very ambiguous, no data encoding format
- Just because the server is using SOAP doesnt
mean its encoding in the way you expect it to - The rules governing encoding within the envelope
are known as Section 5 rules - these rules are not required, causing problems
when users make assumptions about their use
21SOAP message example
POST /StockQuote HTTP/1.1 Host
www.stockquoteserver.com Content-Type text/xml
charset"utf-8" Content-Length nnnn SOAPAction
"Some-URI" ltSOAP-ENVEnvelope
xmlnsSOAP-ENV"http//schemas.xmlsoap.org/soap/en
velope/" SOAP-ENVencodingStyle"http//schemas.
xmlsoap.org/soap/encoding/"gt ltSOAP-ENVBodygt
ltmGetLastTradePrice xmlnsm"Some-URI"gt
ltsymbolgtDISlt/symbolgt
lt/mGetLastTradePricegt lt/SOAP-ENVBodygt lt/SOAP-
ENVEnvelopegt
22example response
HTTP/1.1 200 OK Content-Type text/xml
charset"utf-8" Content-Length
nnnn ltSOAP-ENVEnvelope xmlnsSOAP-ENV"http//
schemas.xmlsoap.org/soap/envelope/"
SOAP-ENVencodingStyle"http//schemas.xmlsoap.org
/soap/encoding/"/gt ltSOAP-ENVBodygt
ltmGetLastTradePriceResponse xmlnsm"Some-URI"gt
ltPricegt34.5lt/Pricegt
lt/mGetLastTradePriceResponsegt
lt/SOAP-ENVBodygt lt/SOAP-ENVEnvelopegt