Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Simple Object Access Protocol

Similar presentations


Presentation on theme: "The Simple Object Access Protocol"— Presentation transcript:

1 The Simple Object Access Protocol
SOAP The Simple Object Access Protocol

2 Objectives Provide an Introduction to SOAP
Rationale and history Protocol description Syntax structure Illustrate Infrastructure around SOAP Security and Authentication Service description and discovery

3 Overview Section 1: Fundamentals Section 2: Protocol Layers
Section 3: Message Elements Section 4: Infrastructure Summary

4 Section 1: Fundamentals
SOAP Definition Evolution of an Open Standard SOAP as RPC Protocol SOAP as Messaging Protocol XML and HTTP

5 SOAP Definition Simple Object Access Protocol 1.1
Envelope for XML Letters Specification definition: "Lightweight mechanism for exchanging structured and typed information between peers [...] using XML." Designed both for messaging and RPC Specifies three parts: SOAP envelope for message framework SOAP encoding for standardized marshaling SOAP RPC as remote procedure call convention

6 Evolution of an Open Standard
SOAP 0.x by UserLand and DevelopMentor Predecessor UserLand‘s XML-RPC SOAP 1.0 co-authored by Microsoft SOAP 1.1 co-authored by IBM, Lotus Endorsed by Sun, IONA, Apache, etc. Submitted as a proposal to W3C Foundation for XML Protocol (XP) working group

7 How it looks A Simplified Request:
HTTP/1.1 POST /soap/mycomponent Content-Type: text/xml SOAPAction: MyComponentMethod <SOAP:Envelope> <SOAP:Body> <m:MyMethodArgumentsRoot> <MyArgument>1</MyArgument> </m:MyMethodArgumentsRoot> </SOAP:Body> </SOAP:Envelope>

8 SOAP as RPC Protocol Marshals procedure calls via XML
Transport can be HTTP, SMTP, etc. Roughly equivalent to DCOM & IIOP No expensive middleware required Anyone can implement easily Simplicity as a design goal Designed for existing Internet infrastructure Default wire-protocol for .NET Remoting

9 SOAP as Messaging Protocol
Descriptive container for any XML data exchange Transport can be SMTP, X.400, Queues etc. EDI-like: Equivalent to EDIFACT/X12 headers Mail-like: Similar to Exchange Forms idea Basis for BizTalk Framework Interoperable and platform agnostic

10 Why XML ? XML is a layered, (mostly) simple, text-based and standardized data exchange architecture. SOAP XML Schema (Classes) XML Information Set (Structure) XML + Namespaces (Elements and Attributes) XML (Documents and Entities)

11 XML for Messaging and RPC
Simplicity XML documents are plain text Portability No platform dependencies No issues as with binary protocols (byte-ordering) XML parsers exist for virtually every platform Universally accepted XML is the #1 data exchange language

12 Why HTTP for RPC? #1 application protocol used on the Internet
Available on all platforms Simple to implement Good infrastructure + extensibility Not Connection oriented Designed for bad network conditions Designed to scale HTTP services are easily deployed No firewall configuration problems

13 HTTP Characteristics Connectionless request/response mechanism
GET is the access protocol for resources POST is the application protocol for interaction Calls are directed to a URI Headers specify options Response codes indicate success/failure/status HTTP/1.1 POST /signup.aspx Content-Type: text/www-form-urlencoded fname=Clemens&lname=Vasters HTTP/ OK Content-Type: text/html <html><body>Ha!</body></html>

14 Section 2: Protocol Layers
SOAP Envelope SOAP Encoding SOAP RPC

15 The Protocol Layers XML Framework SOAP RPC SOAP Messaging
SOAP layers it's own model on top of XML SOAP RPC SOAP Messaging SOAP Encoding SOAP Envelope Authentication Encryption BTF2.0 Attachments XML Framework

16 SOAP Envelope Purpose: Uniform container for XML messages
SOAP:Envelope is defined by XML Schema URI: Contains SOAP:Header for handling instructions SOAP:Body for XML Payload Specifies order, cardinality for structural elements Defines SOAP:Fault for communication errors.

17 SOAP Encoding Purpose: Encoding is defined by XML schema
Uniform type and encoding system for data in SOAP Envelopes Encoding is defined by XML schema Optional recommendation Ensures interoperability of data Defines rich type system: Simple Types, Enums Compound Values, Structures and References Arrays (incl. Sparse Arrays, Partial Arrays)

18 SOAP RPC SOAP RPC is a set of rules for remote procedure calls
Key Points Interface/Service identified by URI Method invocation is modeled as structure Parameter order for [in/out] in response must be the same as in request. Behavior on error (return SOAP:Fault)

19 Section 3: Message Elements
SOAP:Envelope element SOAP:Header element SOAP:Body element SOAP:Fault element SOAPAction HTTP header SOAP:encodingStyle

20 SOAP:Envelope HTTP/1.1 POST /soap/myservice Content-Type: text/xml SOAPAction: MyInterface#MyComponentMethod <SOAP:Envelope> <SOAP:Header> <m:myHeader xmlns:m=“myURI“ SOAP:mustUnderstand=“0“> HeaderInfo </m:myHeader> </SOAP:Header> <SOAP:Body> <m:MyMethodArgumentsRoot xmlns:m=“myURI“ > <MyArgument>1</MyArgument> </m:MyMethodArgumentsRoot> </SOAP:Body> </SOAP:Envelope>

21 SOAP:Envelope Basics: Must reference to the SOAP Envelope namespace
Top-level (root) element of every SOAP message Must be present Must reference to the SOAP Envelope namespace xmlns:SOAP= “ May have additional, custom attributes If present, they also must be namespace qualified May contain at most one „Header“ child element Must contain exactly one „Body“ child element

22 SOAP:Header HTTP/1.1 POST /soap/myservice Content-Type: text/xml SOAPAction: MyInterface#MyComponentMethod <SOAP:Envelope> <SOAP:Header> <m:myHeader xmlns:m=“myURI“ SOAP:mustUnderstand=“0“> HeaderInfo </m:myHeader> </SOAP:Header> <SOAP:Body> <m:MyMethodArgumentsRoot xmlns:m=“myURI“ > <MyArgument>1</MyArgument> </m:MyMethodArgumentsRoot> </SOAP:Body> </SOAP:Envelope>

23 SOAP:Header Basics: May contain multiple child elements (headers)
Optional element If present, must be immediate child of Envelope May contain multiple child elements (headers) Specify processing hints for the message All child elements must be namespace-qualified Special attributes for child elements: SOAP:mustUnderstand={“0“|“1“} Specifies whether the header must be understood. If the server cannot understand the header, it must fail SOAP:actor=“someURI“ Specifies who must or should process the header

24 Headers: Actors and Intermediaries
Client SOAP Router Dept. Server <m:destination xmlns:m=“myNamespace-URI“ SOAP:mustUnderstand=“1“ SOAP:actor=“next“/> <m:dept> <m:dept> </m:destination> Dept. Server Envelope Header Dept. Server acts on header and routes to appropriate dept. server

25 SOAP:Body HTTP/1.1 POST /soap/myservice Content-Type: text/xml SOAPAction: MyInterface#MyComponentMethod <SOAP:Envelope> <SOAP:Header> <m:myHeader xmlns:m=“myURI“ SOAP:mustUnderstand=“0“> HeaderInfo </m:myHeader> </SOAP:Header> <SOAP:Body> <m:MyMethodArgumentsRoot xmlns:m=“myURI“ > <MyArgument>1</MyArgument> </m:MyMethodArgumentsRoot> </SOAP:Body> </SOAP:Envelope>

26 SOAP:Body Basics: May contain an unlimited number of child elements
Must be present Must be an immediate child of the Envelope May contain an unlimited number of child elements Children are called „body entries“ Body entries may be namespace- qualified Not subject to any encoding rules by default

27 SOAP:Fault HTTP/1.1 POST /soap/myservice Content-Type: text/xml SOAPAction: MyInterface#MyComponentMethod <SOAP:Envelope> <SOAP:Body> <SOAP:Fault> <faultcode>Server.InvalidArg</faultcode> <faultstring>Type is wrong </faultstring> <detail/> </SOAP:Fault> </SOAP:Body> </SOAP:Envelope>

28 SOAP:Fault Basics: Child Elements:
SOAP Fault carries status and error information. Must be a body entry and may appear only once. Child Elements: faultcode: machine-readable reason-code faultstring: human-readable reason explanation. faultactor: indicates actor detail: arbitrary data as detail info.

29 SOAPAction HTTP/1.1 POST /soap/myservice Content-Type: text/xml SOAPAction: MyInterface#MyComponentMethod <SOAP:Envelope> <SOAP:Header> <m:myHeader xmlns:m=“myURI“ SOAP:mustUnderstand=“0“> HeaderInfo </m:myHeader> </SOAP:Header> <SOAP:Body> <m:MyMethodArgumentsRoot xmlns:m=“myURI“ > <MyArgument>1</MyArgument> </m:MyMethodArgumentsRoot> </SOAP:Body> </SOAP:Envelope>

30 SOAPAction Basics SOAPAction attribute is a URI and may be empty
SOAPAction header applies only to HTTP binding Must be present for HTTP SOAP calls Must be accompanied by „Content-Type: text/xml“ SOAPAction attribute is a URI and may be empty V1.1 specification issue Role of HTTP URI vs. SOAPAction header vaguely defined Recommended interpretation Use HTTP URI to specify the service Use SOAPAction to specify interface and method

31 SOAP:encodingStyle Basics Scope and Inheritance
„encodingStyle“ is a global attribute Encoding identified by URI May be applied to any element at any level Enforces common rules for serialization of data Scope and Inheritance If present on an element, it applies to all children Any child may override encoding with own choice SOAP defines an optional, standard encoding style Section 5 of the specification

32 Encoding Simple Types Simple types are specified using the encoding namespace <SOAP:Envelope xmlns:SOAP=“ xmlns:SOAP-ENC=“ encoding/“ SOAP:encodingStyle=“ schemas/encoding/“> [...] <title xsi:type=„SOAP-ENC:string“> My Life and Work </title> <price xsi:type=„SOAP-ENC:float“> </price> [...] </SOAP:Envelope>

33 Encoding and Referencing Structures
<e:Book>    <title>My Life and Work</title>    <author>        <name>Henry Ford</name>        <address>           <web>        </address>    </author> </e:Book> „single-reference“ and nested structures are embedded

34 Encoding and Referencing Structures
<e:Books> <e:Book> <title>My Life and Work</title>     <author href="#Person-1"/> </e:Book> <e:Book> <title>The Success of Tin Lizzy</title>     <author href="#Person-1"/> </e:Book> </e:Books> <e:Person id="Person-1"> <name>Henry Ford</name> <address> <web> </address> </e:Person> „multi-reference“ structures use id & href attributes

35 Section 4: Infrastructure
Authentication Message Encryption and Signature Service description: WSDL Service discovery: DISCO and UDDI

36 Authentication SOAP enables high-capacity web-services
Raw information, no ads. Different business model Authentication required to control access Authentication is intentionally skipped in SOAP 1.1 Can utilize HTTP authentication framework Can use S/MIME signatures SOAP shall work „cross-everything“ Must use standardized authentication schemes Authentication must be reasonably secure Resistant against various attack types Use Digest Authentication with .NET

37 Privacy SOAP may carry sensitive information
Use HTTPS instead of HTTP Use S/MIME encoding instead of MIME SOAP Extensions for Privacy underway from IBM

38 WSDL Think "TypeLib for SOAP" WSDL = Web Service Description Language
Uniform representation for services Transport Protocol neutral Access Protocol neutral (not only SOAP) Describes: Schema for Data Types Call Signatures (Message) Interfaces (Port Types) Endpoint Mappings (Bindings) Endpoints (Services)

39 DISCO Think "IDispatch for SOAP" Dynamic Discovery of Services
Very, very easy discovery model for HTTP Basics: Call endpoint with GET Check whether this is a DISCO file or a redirect DISCO file contains link to WSDL If redirect goto 1

40 UDDI Think "Yahoo!" for WebServices
Universal Description and Discovery Interface WebService-Programmable "Yellow Pages" Advertise Sites and Services May point to DISCO resources Initiative driven by Microsoft, IBM, Ariba

41 Summary Platform agnostic XML based protocol
Can implement anywhere easily Very Extensible model for messaging and RPC Embedded into existing Internet technology set Built for the Internet, works best for the Internet Open discovery and description infrastructure Foundation for the WebServices model Foundation for .NET Internet Remoting

42 Questions?


Download ppt "The Simple Object Access Protocol"

Similar presentations


Ads by Google