[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: i089, i090 - Scenario 2.4 Request-Reply, Anonymous Client
All,
below is the scenario for the reliable req-repl with an anonymous client that
was requested to be sent separately to the main TC alias. This relates to issue
i090 and i089. Regards, Marc g
Scenario 2.4 Request-Reply, Anonymous Client
The
application level aspects of this scenario are identical to those of the other
Request-Reply scenarios – the client and the service use a request-reply
messaging pattern to exchange messages. In
this scenario, however, the client is unreachable by the service. As a result,
the service must use the HTTP response for all outgoing messages –
whether they are application level or infrastructure level. The fact the client
is anonymous makes this case especially interesting mainly because the service
must rely on the client to make a call in order to be able to respond with a
message of its own. Message Exchange
The
client and the service establish two WS-RM sequences with a dual CS/CSR
handshake (i.e. wsrm:Offer and wsrm:Accept are present). The CSR is carried on
the HTTP response. The
client then transmits one to three requests on the client-to-server sequence.
The HTTP response for each request carries: -
The response to that particular
request. -
A “piggy-backed”
SequenceAcknowledgement header acknowledging the current known state at the
receiver. Each
request, except for the first one, also carries a piggy-backed acknowledgement
acknowledging all the responses the client has received at the point the
request was made. Once
the client received acknowledgements and responses for all its requests, it
sends a TerminateSequence message to the service and considers the client-to-service
sequence complete. The TerminateSequence message “piggy-backs” a
SequenceAcknowledgement header acknowledging the entire range of responses the
client received. Upon receiving the TerminateSequence, the service responds
with a TerminateSequence of its own – for the service-to-client sequence
– and considers that sequence complete. If
a reply never comes back and the HTTP request times out or aborts, the client must
always retransmit that request. If the service already responded to an incoming
request with a given message number, it must respond with a copy of the
original reply. As a consequence, a request must be resent to allow for the
retransmission of its reply even if the request has already been acknowledged
(by another reply received on a different HTTP connection, for example). Because
the TerminateSequence message carries data critical to the graceful shutdown of
the service-to-client sequence, the client must attempt to retransmit the
message if it fails to receive a response. The client does, however, consider
its sequence complete regardless of the reply it receives. On the other hand, a
service will consider its sequence gracefully shutdown only once it has
received all the acknowledgements and the TerminateSequence from the client. It
just so happens that the full acknowledgement range and the TerminateSequence
are part of the same message. CreateSequence Message Example
<s:Envelope> <s:Header>
<a:Action s:mustUnderstand="1">
http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequence
</a:Action>
<a:MessageID>
urn:uuid:ecd75878-45a0-41db-a358-960969467056
</a:MessageID>
<a:ReplyTo>
<a:Address>
http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">
http://server-machine/echoString
</a:To> </s:Header> <s:Body>
<r:CreateSequence>
<r:AcksTo>
<a:Address>
http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
</a:Address>
</r:AcksTo>
<r:Offer>
<r:Identifier>
urn:uuid:a721a819-35ea-436b-8106-fdcd317016c7
</r:Identifier>
</r:Offer>
</r:CreateSequence> </s:Body> </s:Envelope> CreateSequenceResponse Message Example
<s:Envelope> <s:Header>
<a:Action s:mustUnderstand="1">
http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequenceResponse
</a:Action>
<a:RelatesTo>
urn:uuid:ecd75878-45a0-41db-a358-960969467056
</a:RelatesTo> </s:Header> <s:Body>
<r:CreateSequenceResponse>
<r:Identifier>
urn:uuid:2c8e5a86-abae-4dc6-960e-41c914228b03
</r:Identifier>
<r:Accept>
<r:AcksTo>
<a:Address>
http://server-machine/echoString
</a:Address>
</r:AcksTo>
</r:Accept>
</r:CreateSequenceResponse> </s:Body> </s:Envelope> EchoString Message Example
<s:Envelope> <s:Header>
<r:Sequence s:mustUnderstand="1">
<r:Identifier>
urn:uuid:2c8e5a86-abae-4dc6-960e-41c914228b03
</r:Identifier>
<r:MessageNumber>1</r:MessageNumber>
</r:Sequence>
<a:Action s:mustUnderstand="1"> urn:wsrm:EchoString
</a:Action>
<a:MessageID>
urn:uuid:baf71839-cb2c-4fd8-99f1-d59bfe8d3aa7
</a:MessageID>
<a:ReplyTo>
<a:Address>
http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">
http://server-machine/echoString
</a:To> </s:Header> <s:Body>
<echoString xmlns="http://tempuri.org/">
<Text>Hello</Text>
<Sequence>urn:uuid:2c8e5a86-abae-4dc6-960e-41c914228b03</Sequence>
</echoString> </s:Body> </s:Envelope> EchoStringResponse Message Example
<s:Envelope> <s:Header>
<r:Sequence s:mustUnderstand="1">
<r:Identifier>
urn:uuid:a721a819-35ea-436b-8106-fdcd317016c7
</r:Identifier>
<r:MessageNumber>1</r:MessageNumber>
</r:Sequence>
<r:SequenceAcknowledgement>
<r:Identifier> urn:uuid:2c8e5a86-abae-4dc6-960e-41c914228b03
</r:Identifier>
<r:AcknowledgementRange Lower="1" Upper="1" />
</r:SequenceAcknowledgement>
<a:Action s:mustUnderstand="1">
urn:wsrm:EchoStringResponse
</a:Action>
<a:RelatesTo>
urn:uuid:baf71839-cb2c-4fd8-99f1-d59bfe8d3aa7
</a:RelatesTo> </s:Header> <s:Body>
<echoStringResponse xmlns="http://tempuri.org/">
<EchoStringReturn>Hello</EchoStringReturn>
</echoStringResponse> </s:Body> </s:Envelope> EchoString Message Example (2)
<s:Envelope> <s:Header>
<r:SequenceAcknowledgement>
<r:Identifier>
urn:uuid:a721a819-35ea-436b-8106-fdcd317016c7
</r:Identifier>
<r:AcknowledgementRange Lower="1" Upper="1" />
</r:SequenceAcknowledgement>
<r:Sequence s:mustUnderstand="1">
<r:Identifier>
urn:uuid:2c8e5a86-abae-4dc6-960e-41c914228b03
</r:Identifier>
<r:MessageNumber>2</r:MessageNumber>
</r:Sequence>
<a:Action s:mustUnderstand="1"> urn:wsrm:EchoString
</a:Action>
<a:MessageID>
urn:uuid:515df164-45a9-49a9-ba72-8f05bb8b6182
</a:MessageID>
<a:ReplyTo>
<a:Address>
http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">
http://server-machine/echoString
</a:To> </s:Header> <s:Body>
<echoString xmlns="http://tempuri.org/">
<Text>World</Text>
<Sequence>urn:uuid:2c8e5a86-abae-4dc6-960e-41c914228b03</Sequence>
</echoString> </s:Body> </s:Envelope> Client’s TerminateSequence Message Example
<s:Envelope> <s:Header>
<r:SequenceAcknowledgement>
<r:Identifier>
urn:uuid:a721a819-35ea-436b-8106-fdcd317016c7
</r:Identifier>
<r:AcknowledgementRange Lower="1" Upper="3" />
</r:SequenceAcknowledgement>
<a:Action s:mustUnderstand="1">
http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequence
</a:Action>
<a:To s:mustUnderstand="1">
http://server-machine/echoString
</a:To> </s:Header> <s:Body>
<r:TerminateSequence>
<r:Identifier>
urn:uuid:2c8e5a86-abae-4dc6-960e-41c914228b03
</r:Identifier>
</r:TerminateSequence> </s:Body> </s:Envelope> Service’s TerminateSequence Message Example
<s:Envelope> <s:Header>
<a:Action s:mustUnderstand="1">
http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequence
</a:Action> </s:Header> <s:Body>
<r:TerminateSequence>
<r:Identifier>
urn:uuid:a721a819-35ea-436b-8106-fdcd317016c7
</r:Identifier>
</r:TerminateSequence> </s:Body> </s:Envelope> Marc Goodner Technical Diplomat Microsoft Corporation Tel: (425) 703-1903 Blog: http://spaces.msn.com/mrgoodner/
|
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]