Simple Object Access Protocol - School of Information

clappingknaveΛογισμικό & κατασκευή λογ/κού

14 Δεκ 2013 (πριν από 3 χρόνια και 9 μήνες)

83 εμφανίσεις

SOAP

(Simple Object Access Protocol)

Matt Brodie

March 20
th

2006


"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]"

SOAP’s designers


Initial development done by a team including
representatives from:


DevelopMentor


IBM


Lotus


Microsoft


UserLand

SOAP’s 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 AT&T, DaimlerChrysler, Intel, and Fujitsu

some 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]

continued


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 tech
no
-
logy of HTTP with the flexibility and
extensibility of XML. [perfectxml.com]

from 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]

the 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]

repetitious words


Extensible


Platform
-
nonspecific


Utilizes existing software


Facilitates communication


Simple


a 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)

SOAP’s 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.

simple depiction of SOAP in action

SOAP


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

SOAP 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

very simple example

<Envelope>


<Header>


<transId>345</transId>


</Header>


<Body>


<Add>


<n1>3</n1>


<n2>4</n2>


</Add>


</Body>

</Envelope>

HTTP 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

HTTP binding for a request:

POST /string_server/Object17 HTTP/1.1

Host: 209.110.197.2

Content
-
Type: text/xml

Content
-
Length: nnn

Response:

200 OK

Content
-
Type: text/xml

Content
-
Length: nnn

<SOAP
-
ENV:Envelope


xmlns:SOAP
-
ENV=“http://schemas.xmlsoap.org/soap/envelope/”


SOAP
-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/”>


<SOAP
-
ENV:Header>


<t:transId xmlns:t=“http://a.com/trans”>345</t:transId>


</SOAP
-
ENV:Header>


<SOAP
-
ENV:Body>


<m:Add xmlns:m=“http://a.com/Calculator”>


<n1>3</n1>


<n2>4</n2>


</m:Add>


</SOAP
-
ENV:Body>

</SOAP
-
ENV:Envelope>

previous example, fleshed out

intermediaries


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

drawbacks


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 doesn’t mean
it’s 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

SOAP message example

POST /StockQuote HTTP/1.1

Host: www.stockquoteserver.com

Content
-
Type: text/xml; charset="utf
-
8"

Content
-
Length: nnnn

SOAPAction: "Some
-
URI"


<SOAP
-
ENV:Envelope


xmlns:SOAP
-
ENV="http://schemas.xmlsoap.org/soap/envelope/"


SOAP
-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">


<SOAP
-
ENV:Body>


<m:GetLastTradePrice xmlns:m="Some
-
URI">


<symbol>DIS</symbol>


</m:GetLastTradePrice>


</SOAP
-
ENV:Body>

</SOAP
-
ENV:Envelope>

example response

HTTP/1.1 200 OK

Content
-
Type: text/xml; charset="utf
-
8"

Content
-
Length: nnnn


<SOAP
-
ENV:Envelope


xmlns:SOAP
-
ENV="http://schemas.xmlsoap.org/soap/envelope/"


SOAP
-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>


<SOAP
-
ENV:Body>


<m:GetLastTradePriceResponse xmlns:m="Some
-
URI">


<Price>34.5</Price>


</m:GetLastTradePriceResponse>


</SOAP
-
ENV:Body>

</SOAP
-
ENV:Envelope>