SOAP 1.2
      Message Exchange Patterns (MEPs)
    
    Glen Daniels
    
    Jean-Jacques Moreau
    
    SOAP 1.1
    
    
      - HTTP specific
	
	  - Although less so
	    than prior versions
 
-  Uses
	HTTP POST
-  Mainly
	used for RPCs
	
	  -  RPC request
	    mapped to HTTP request
-  RPC response
	    mapped to HTTP response
 
SOAP 1.2
    
    
      - No longer limited to HTTP
- Binding framework
	
	  - Shields SOAP from underlying protocol
- Model
	    for plugging-in other protocols
- Not
	    limited to request-response either
- Features not supported by a given protocol can be
	    implemented via extensions to SOAP processing model
 
SOAP 1.2 MEPs
    
    
      - Describe message exchanges, such as
	request-response
- Described by state machine for each participating
	  node
- Independent of underlying protocol
- Named by URI
	
	  - E.g. http://www.w3.org/2001/12/soap/mep/request-response/
 
- Two MEPs in latest ed-copy
	
	  - SOAP request-response (stable)
- SOAP response (work in progress, no consensus, subject
	    to TAG feedback)
	    
	  
 
Request-Response MEP
    
    
      - Exchange of a single SOAP request and a SOAP response
	between two adjacent SOAP nodes
	
	  - No intermediary in between
- Assumption time-limited exchange, not long-lived
	    transactions
	    
	      - Both requests and responses
		are SOAP messages
- Both are processed according
		to SOAP processing model
 
 
- For HTTP binding, maps to HTTP POST
      
Request-Response MEP
    
    
    
    Request-Response MEP
    
    MEP properties:
    
      - context:ExchangePatternName
- context:FailureReason
- reqres:Role
- reqres:State
- reqres:OutboundMessage
- reqres:InboundMessage
- reqres:ImmediateDestination
- reqres:ImmediateSender
SOAP MEP = WSDL MEP ?
    
    Does it
      make sense to replace hard-coded <input> and <output>
      elements with dynamic syntax using SOAP message and feature
      names?
    
    Example
    
    
<operation name="foo" mep="…/request-response">
  <message name="…OutboundMessage" element="foo:req" />
  <message name="…InboundMessage" element="foo:resp" />
</operation>