220 likes | 364 Views
SOAP (Simple Object Access Protocol). Matt Brodie March 20 th 2006.
E N D
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 technology 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.
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>