Herong's Tutorial Notes on Web Service and SOAP
Dr. Herong Yang, Version 3.00

Request-Response Message Exchange Pattern

This section describes the SOAP Request-Response Message Exchange Pattern, its properties and processing rules.

Request-Response Message Exchange Pattern is a pattern where a request SOAP message followed by a response SOAP message are exchanged between two SOAP nodes. The pattern name is: http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
/ExchangePatternName = http://www.w3.org/2003/05/soap/mep/request-response/

Request-Response Message Exchange Pattern defines the following additional SOAP properties:

4. Outbound Message: Used to represent the outbound SOAP message from this local node point of view. This property is named as: http://www.w3.org/2003/05/soap/mep/OutboundMessage

5. Inbound Message: Used to represent the inbound SOAP message from this local node point of view. This property is named as: http://www.w3.org/2003/05/soap/mep/InboundMessage

6. Destination Node: Used to identify the remote SOAP node of the outbound message. This property is named as: http://www.w3.org/2003/05/soap/mep/ImmediateDestination

7. Sender Node: Used to identify the remote SOAP node of the inbound message. This property is named as: http://www.w3.org/2003/05/soap/mep/ImmediateSender

Request-Response Message Exchange Pattern also defines the following processing rules:

Rule 1: At the requesting SOAP node, there will be a set of SOAP properties with the following initial values:

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /ExchangePatternName
   = "http://www.w3.org/2003/05/soap/mep/request-response/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /FailureReason
   = "None"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /Role
   = "RequestingSOAPNode/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /State
   = "Init"

http://www.w3.org/2003/05/soap/mep/OutboundMessage
   = (the requesting message)

http://www.w3.org/2003/05/soap/mep/InboundMessage
   = (not defined yet)

http://www.w3.org/2003/05/soap/mep/ImmediateDestination
   = (the URI of the responding node)
   
http://www.w3.org/2003/05/soap/mep/ImmediateSender
   = (not defined)

Rule 2: At the responding SOAP node, there will be another set of SOAP properties with the following initial values:

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /ExchangePatternName
   = "http://www.w3.org/2003/05/soap/mep/request-response/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /FailureReason
   = "None"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /Role
   = "RespondingSOAPNode/"

http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext
   /State
   = "Init"

http://www.w3.org/2003/05/soap/mep/OutboundMessage
   = (not defined yet)

http://www.w3.org/2003/05/soap/mep/InboundMessage
   = (the requesting message)

http://www.w3.org/2003/05/soap/mep/ImmediateDestination
   = (not defined)
   
http://www.w3.org/2003/05/soap/mep/ImmediateSender
   = (the URI of the requesting node)

Rule 3: In the normal process flow, the requesting node will initiate the communication call, and start sending the request message. The responding node will answer the call, and start receiving the request message. The responding node can start sending the response message once the first part of the request message has arrived at the responding node. The progress of the communication process should be presented by the "State" property at both nodes as illustrated in the following diagram:

"State" at Requesting Node           "State" at Responding Node
"Init"
   |
   |- Initialization
   v
"Requesting"        <------------>   "Init"
   |                                    |
   |- Requsting SOAP call               | - Initialization
   |                                    v
   |                <------------>   "Receiving"
   |                                    |
   |                                    | - Receiving SOAP call
   v                                    v
"Sending+Receiving" <------------>   "Receiving+Sending"
   |                                    |
   |- Sending request msg               | - Receiving request msg
   |- Receiving response msg            | - Sending response msg
   v                                    v
"Success"                            "Success"

Sections in This Chapter

What Are SOAP Message Exchange Patterns?

Request-Response Message Exchange Pattern

Response Message Exchange Pattern

Web Method Feature

SOAP Action Feature

Dr. Herong Yang, updated in 2007
Request-Response Message Exchange Pattern