SOAP
SOAP is a protocol for exchanging XML-based messages over computer networks,
normally using HTT!HTT"# "$% forms the foundation layer of the &eb services
stack, providing a basic messaging framework that more abstract layers can build on#
There are several different types of messaging patterns in "$%, but by far the most
common is the 'emote rocedure (all )'(* pattern, in which one network node )the
client* sends a re+uest message to another node )the server*, and the server
immediately sends a response message to the client# "$% is the successor of XML-
'(, though it borrows its transport and interaction neutrality and the
envelope!header!body from elsewhere, probably from &,,X
-citation needed.
#
History
"$% originally stood for Simple Object Access Protocol, and lately also Service
Oriented Architecture Protocol, but is now simply "$%# The original acronym was
dropped with /ersion 0#1 of the standard, which became a &2( 'ecommendation on
3une 14, 1552, as it was considered to be misleading#
"$% was originally designed by ,ave &iner, ,on 6ox, 6ob %tkinson, and Mohsen %l-
7hosein in 0889 with backing from Microsoft )where %tkinson and %l-7hosein worked at
the time* as an ob:ect-access protocol# The "$% specification is currently maintained
by the XML rotocol &orking 7roup of the &orld &ide &eb (onsortium#
Transport methods
"$% makes use of an ;nternet application layer protocol as a transport protocol# (ritics
have argued that this is an abuse of such protocols, as it is not their intended purpose
and therefore not a role they fulfill well# 6ackers of "$% have drawn analogies to
successful uses of protocols at various levels for tunneling other protocols#
-citation needed.
6oth "MT and HTT are valid application layer protocols used as Transport for "$%,
but HTT has gained wider acceptance as it works well with today<s ;nternet
infrastructure= specifically, "$% works well with network firewalls# "$% may also be
used over HTT" )since it is the same protocol as HTT at the application level, but
using an encrypted transport protocol underneath* in either simple or mutual
authentication= this is the advocated &"-; method to provide web service security as
stated in the &"-; 6asic rofile 0#0, see -1.# This is a ma:or advantage over other
distributed protocols like 7;$!;;$ or ,($M which are normally filtered by firewalls#
XML was chosen as the standard message format because of its widespread use by
ma:or corporations and open source development efforts# %dditionally, a wide variety of
freely available tools significantly ease the transition to a "$%-based implementation#
The somewhat lengthy syntax of XML can be both a benefit and a drawback# ;ts format
is possible for humans to read, but can be complex and can have slow processing times#
>or example, ($'6%, 7;$, ;(?, and ,($M use much shorter, binary message
formats# $n the other hand, hardware appliances are available to accelerate processing
of XML messages# -2. -4.# 6inary XML is also being explored as a means for streamlining
the throughput re+uirements of XML#
Advantages
@sing "$% over HTT allows for easier communication behind proxies and
firewalls than previous remote execution technology#
"$% is versatile enough to allow for the use of different transport protocols# The
standard stacks use HTT as a transport protocol, but other protocols are also
usable )T(, "AM*#
Weaknesses
6ecause of the verbose XML format, "$% can be considerably slower than
competing middleware technologies such as ($'6%# This may not be an issue
when only small messages are sent-B.# $n the other side, "$% has Message
Transmission $ptimiCation Mechanism#
&hen relying on HTT as a transport protocol and not using &"-%ddressing or
an ?"6, the roles of the interacting parties are fixed# $nly one party )the client*
can use the services of the other# "o developers must use polling instead of
notification in these common cases#
Many "$% implementations limit the amount of data that can be sent#
Most uses of HTT as a transport protocol are done in ignorance of how the
operation would be modelled in HTT# This agnosticism is by design )with
analogy to how different protocols sit on top of each other in the ; stack* but the
analogy is imperfect )because the application protocols used as transport
protocols are not really transport protocols*# 6ecause of this there is no way to
know if the method used is appropriate to the operation# This makes good
analysis of the operation at the application-protocol level problematic at best with
results that are at least sub-optimal )if the $"T-based binding is used for an
application which in HTT would be more naturally modelled as a 7?T
operation*, and which may be buggy )if for example the 7?T based binding were
used for an operation which did not have the idempotency re+uired of 7?T*#
Example
Here is an example of how a client might format a "$% message re+uesting product
information from a fictional warehouse web service# The client needs to know which
product corresponds with the ;, 91DE2BF
GsoapF?nvelope xmlnsFsoapHIhttpF!!schemas#xmlsoap#org!soap!envelope!IJ
GsoapF6odyJ
Ggetroduct,etails xmlnsHIhttpF!!warehouse#example#com!wsIJ
Gproduct;,J91DE2BG!product;,J
G!getroduct,etailsJ
G!soapF6odyJ
G!soapF?nvelopeJ
%nd here is a possible response to the client re+uestF
GsoapF?nvelope xmlnsFsoapHIhttpF!!schemas#xmlsoap#org!soap!envelope!IJ
GsoapF6odyJ
Ggetroduct,etails'esponse xmlnsHIhttpF!!warehouse#example#com!wsIJ
Ggetroduct,etails'esultJ
GproductAameJToptimate 2-iece "etG!productAameJ
Gproduct;,J91DE2BG!product;,J
GdescriptionJ2-iece luggage set# 6lack olyester#G!descriptionJ
Gprice currencyHIA;"IJ8E#B5G!priceJ
Gin"tockJtrueG!in"tockJ
G!getroduct,etails'esultJ
G!getroduct,etails'esponseJ
G!soapF6odyJ
G!soapF?nvelopeJ