Understanding SOAP by gabyion

VIEWS: 54 PAGES: 22

									        SOAP
(Simple Object Access Protocol)


      Matt Brodie
        March 20th 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
       previous example, fleshed out


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

								
To top