- From: David Hull <dmh@tibco.com>
- Date: Fri, 14 Apr 2006 23:24:42 -0400
- To: "xml-dist-app@w3.org" <xml-dist-app@w3.org>
- Message-id: <4440677A.2030105@tibco.com>
(resent from correct address) 1. I send you a message. You receive it twice. What message exchange(s) have occurred, consisting of what events? 2. What does "reliable delivery" mean? These can both be answered by A one-way message exchange is /reliable/ if the sender and receiver make the same state transitions and, if they enter the success state, they agree on the content of the .../Message property. Reliable message exchange is an OPTIONAL feature. However, bindings MUST indicate under what conditions, if any, they provide it. In the absence of any other guarantees, the receiver may transition out of the init state zero or more times for each time the sender does so. If the receiver enters the success state, its .../Message property SHOULD be the same as that of the sender. Notes: * The names "InboundMessage" and "OutboundMessage" make sense for request-response but not here, though they are carried over in the current proposals. Here there should just be "Message", with the sender and receiver each having its own copy (just as they each have their own copy of InboundMessage and OutboundMessage). I would recommend this change for whatever version we go with. * The second clause leaves open the question of how the receiver transitions back into the init state. The more explicit way to do this is just to add transitions back up to the top (nearly doubling the number of lines with arrows in the picture -- oh no!). Effectively, the sender and receiver both run in a loop of two parts: 1) wait to send/receive 2) succeed or detect failure. * In the reliable case, each side goes through the loop once per message. In a /synchronous/ reliable case, the sides go through their loops in complete lockstep. Otherwise messages may be reordered, but the receiver will still succeed or detect failure exactly once per sent message. * Synchrony (in-order) can be defined orthogonally to the above definition of reliability (exactly once). * If we really don't like state machines, another way to say the same thing would be to define a while loop for each side and talk about execution traces.
Received on Saturday, 15 April 2006 03:24:53 UTC