- From: Doug Davis <dug@us.ibm.com>
- Date: Wed, 9 Aug 2006 14:45:34 -0400
- To: Alastair Green <alastair.green@choreology.com>
- Cc: public-ws-addressing@w3.org, ws-rx@lists.oasis-open.org
- Message-ID: <OFE2AD95DC.540BCD57-ON852571C5.0063D79D-852571C5.00670C6C@us.ibm.com>
Alastair Green <alastair.green@choreology.com> wrote on 08/09/2006 03:29:42 AM: > Thanks for your detailed response. For me at least this is > clarifying. Point by point:. > > A. You view MC as passing an EPR. But it's a very odd EPR. No, it passes in a URI or an RM Identifier. > 1) It is constrained to the address (has no way of communicating ref > params). You maintain that we can and must pass be able to pass ref > params. How, where? There are two possible elements in wsrm: > MakeConnection -- wsrm:Identifier and wsrm:Address. Where is the > space for reference parameters in wsrm:Address? We purposely avoided asking for comparision of ref-p's - hence no ref-p's passed in on the MC. However, there are ref-p's on the full EPR that was given to the service (e.g. replyTo or targetEPR in the e.g.) and those will be echoed back in the message is sent back because of the MakeConnection. > 2) It means: "use the transport response". Just like WSA's anon. > 3) It is computable from a subset (the UUID), and it is therefore > not necessary to pass it in its entirety. Or to put it another way, > precisely because we can't pass a full EPR, we only need to pass a UUID. We avoided asking people to do substrings of URI comparing. While technically the UUID is all that might be needed to pass around we decided that asking people to do URI comparing is far more natural when talking about identifying Web endpoints. > All comments to the effect: the UUID alone is not sufficient, is > irrelevant etc, are rendered moot by point 3). Not really - since the RM spec says you must compare the full URI the UUID does, sort of, become a minor issue. It just becomes part of the uniqueness of the URI. My main point in trying to convey the irrelevance of the UUID is that you seemed to want to tie it to the applications somehow and that is totally wrong. You can not tie it any more or less to the application than you could with an EPR that points to www.ibm.com. Perhaps I was reading too much into your previous notes, but when you started to talk about the UUID being used to identify the Subscription it lead me down this path. > If the URI equals well-known constant A, suffixed by variable UUID, > then it is absolutely unnecessary to pass A, and only necessary to pass UUID. That's just a syntactical sugar kind of difference. > To put this another way: MakeConnection is not really an RM > mechanism, it is an application mechanism. RM is defining something > that WS-Addressing really ought to define. The channel can be used > to send application messages of any description. WSA could very well have defined this mechanism but it didn't. RM saw a critical need for it, no one was trying to address it, so... > Overall, I think the mental model "pass an EPR, and then receive > communication back to that EPR" does not match what is in the spec. > What the spec actually says is: send me a reply to this request > (where the reply may simply be a receipt ack). The correlation or > addressing is given by the transport response. (Which is why, > ultimately, the connection identifier/UUID, however carried, is > unnecessary: it is purely application context, which RM is giving > house room to.) To be honest you lost me :-) But I think I disagree. The RManonURI is not application context - it uniquely identifies an endpoint - just like most other URIs (anon/none being the most obvious exceptions). > B. "The UUID does not identify the subscription, it identifies the > stream of messages from producer to consumer". Actually the UUID > identifies a channel whose scope/ meaning is application-defined. It > is an app-level context. Creating more complicated application > examples doesn't clarify -- it just adds redundant detail. Disagree. If the same RManonURI were used across lots of different applications (which it can be) what does that do to your assertion that its application-defined? Again - is an EPR with www.ibm.com as its wsa:Address application defined when I pass that in on a Subscribe()? I don't think so. Its use, in terms of what messages will be sent to that EPR, is application defined - and RManonURI is no different. > C. If "UUID" is the identity of the "stream", and the stream is > constructed by two application parties, then the use of UUID is a > way of ensuring that the parties aren't lazy, but the UU bit is not > necessary. It's a BUID -- bilaterally unique ID. Secondary point. > > D. I said that the publisher needs to know that all traffic on this > stream is related to the passage of the content relating to this > subscription. In the context of RM, traffic establishing sequence > etc is indeed related to the passage of the content relating to this > subscription. I did not say "traffic which is application data only, > and has nothing to do with RM context or apparatus". In other words, > we are violently agreeing. > > E. How can anon=required refer to the set up message? WS-Addressing > has no concept of a message that passes by out-of-band (application) > means the need to respond on the back-channel. That is a process > which cannot be specified by WS-A means: it requires RM-level > specification, or an amendment to WS-Addressing. This is the heart of the issue. WSAW anon refers to "all response endpoint EPRs in a message" - this to me says it controls what can go into the wsa:ReplyTo EPR. And RM would like to put some other anon URI in there. > F. I take reference to CloseSequence (which embeds Identifier) to > mean: "Yes, it's true that sequence Identifier is a proxy for UUID > (application stream identity). Yes, it's true that the RM URI plays > no part in the sequence case". > > G. The [destination endpoint] splits into wsa:To (the address) and > wsa:ReferenceParameters. Putting the UUID in the address is not > "just like normal EPRs". It is precisely unlike normal EPRs, which > put the routing/contextualization in another element, and keep the > address for the transport-level address. RManonURI is a transport-level address just as much as anon is :-) > H. I think that you and Chris are straining far too hard to deny > that MC induces responses. Each and every MC invites a response. The > response may be empty (the ack alone). So what? By this "physical" > means (solicit message, solicit message, solicit message) we create > a logical stream of "message, message". It would be a lie to say we don't want messages to flow back on the wire as a result of a MC. But those messages are _NOT_ responses to MC - they are (and I'm a bit afraid to say this, but here goes) more like new one-way messages - in the same way that a message sent to a non-anon EPR is a new one-way message. The message flowing in the non-anon EPR case may be a request or a response message but it is carried over an HTTP request flow. MC is no different except the message is carried over an HTTP response flow. We are very careful to say that it is not a response to the MC because it isn't. Is it simply establishing a connection and providing some correlation data so the receiver knows who is at the other end of the connection. It is no different than the non-anon EPR case except the other side initiated the connection. Perhaps we haven't made this clear, but we never expect any application code to ever process the MC - this would typically be handled by the infrastructural layer (not required but typically). Maybe you didn't realize this and that's why you think the app gets involved. Just like the "resend until acked" part of RM doesn't typically impact the application, the use of MC doesn't either. > I. Example 1b. Where is the wsa:To? It defaults to the anonymous > URI, like wsa:ReplyTo. No need to state on the wire. Oh yea, I forgot WSA did that. No comment on that one :-) > J. Example 2b. How did ConnectionIdentifier get into the message? > Because the sender of the back-channel response read the MC element, > and found the sub-element ConnectionIdentiifier ... and reflected it > back. Just like reflecting back the sequence Identifier. You lost me because I don't understand how it go into the message before the MC arrived and I think that's critical. But I think its a tangential issue. > K. An RM header called Connection Identifier is no more a reference > parameter than sequence Identifier. The app needs to establish a > non-opaque context for the stream or relationship. This is analogous > to passing transaction context id explicitly in WS-Coordination Register. RM decided that creating a well-defined ref-p would be bad. > L. To must equal ReplyTo legal because this is a one-way. If [reply > endpoint] = none URI, then true. Thus far, [reply endpoint] was > defaulted to anon URI, so not true. But see response to Chris and > Paul re [reply endpoint] = none. One more time - the message sent because of a MC is not a response to MC. Any WSA headers in that message are defined by the application or the WSA processing rules - not by RM or the MC operation. This is no different than how any message gets its WSA headers.
Received on Wednesday, 9 August 2006 18:46:01 UTC