- From: David Hull <dmh@tibco.com>
- Date: Thu, 02 Feb 2006 16:24:45 -0500
- To: Christopher B Ferris <chrisfer@us.ibm.com>
- Cc: "public-ws-addressing@w3.org" <public-ws-addressing@w3.org>, public-ws-addressing-request@w3.org
- Message-id: <43E2789D.5000908@tibco.com>
Christopher B Ferris wrote: > > > Does any of this make sense to you? > > Yes, > > See http://www.w3.org/Submission/ws-polling/ Saw it. Liked it. Forget how it interacts with WS-RX and end-to-end acks. > > Cheers, > > Christopher Ferris > STSM, Emerging e-business Industry Architecture > email: chrisfer@us.ibm.com > blog: http://www.ibm.com/developerworks/blogs/dw_blog.jspa?blog=440 > phone: +1 508 377 9295 > > public-ws-addressing-request@w3.org wrote on 02/02/2006 03:40:53 PM: > > > First, it seems that even in case 1, the ack coming back may not be > > (solely) for the response being sent. I.e.,: > > I send a request. > > I see a failure, but in fact you got the request (s#!t happens). Um > > ... if it's req-response, how does your response get back? So > > suppose it's one-way ... > > I send another message > > I get back an ack for both messages. > > I believe this is what you were describing? If so, the strictly > > speaking it's already probably afoul of the semantics of 202. > > > > The scenario I had in mind was more like this: > > I POST messages to a mailbox > > An intermittently connected device GETs those messages whenever it can. > > I want to know when it gets them (and not just when they landed in > > the mailbox). > > This doesn't seem exotic to me; it's inches away from web mail, > > especially if you throw in return-receipt. Naturally, you can also > > do the same thing with email, with the same concern. SMTP will only > > tell you that the server got the message, not that the remote device > > retrieved it. > > > > Mark Baker pointed out (IIUC) that this is basically building a > > transfer protocol on top of HTTP and (IIUC) that it would be better > > just to implement such a protocol directly between me and that > > intermittently connected device. I largely agree with both > > sentiments (whether or not Mark does :-), but I may disagree on the > > implications. > > > > As far as I can tell, a major piece of potential value added by WS-* > > is the ability to use the features of various protocols end-to-end > > on a pay-as-you-go basis. For example, TCP provides (among other > > things) reliability and packet reassembly. In the case in point, I > > need reliability very much like that provided by TCP, but I don't > > need packet reassembly (packets are effectively arbitrarily big). > > Further, TCP generally treats intermittent connectivity past a > > fairly short interval as an error. In all, implementing some form > > of TCP between myself and the remote device seems like a bad fit. > > > > By using WS-RX, I can get end-to-end reliability regardless of > > whether the "packets" are sent directly, POSTed to and GOT from a > > mailbox, sent via email, or whatever. > > > > If you buy this as a use case, it seems pretty clear that sending > > back acks in the manner I proposed would be very useful. It > > wouldn't be strictly necessary. The mailbox needs to provide a > > separate GET operation for acks anyway, because I don't always want > > to wait until I've got something new to send to find out if previous > > stuff arrived. Given that, I could do a GET(acks) after every > > POST(message) and get the same effect as piggybacking. This seems > > inefficient, though. > > > > Does any of this make sense to you? > > > > Christopher B Ferris wrote: > > > > David, > > > > Please see my comments inlined below. > > > > Cheers, > > > > Christopher Ferris > > STSM, Emerging e-business Industry Architecture > > email: chrisfer@us.ibm.com > > blog: http://www.ibm.com/developerworks/blogs/dw_blog.jspa?blog=440 > > phone: +1 508 377 9295 > > > > public-ws-addressing-request@w3.org wrote on 02/02/2006 01:18:44 PM: > > > > > In the case of WS-RX acks coming back in the HTTP response with any > > > application-level response going elsewhere, just which cases are we > > > considering? I can think of at least two: > > > 1. WS-RX ack of the HTTP request > > > I send you a message. > > > You send me back a WS-RX ack of that message with a 202. You might > > > also send some other message somewhere, but I don't think that's > > > relevant here. > > > 2. General WS-RX ack, for example > > > I send you a message. > > > You don't ack it immediately, but instead just send an empty 202. > > > I send you another message > > > You send me WS-RX acks for both messages. > > > Case 1 seems almost pointless. If all I need to know is that you > > > got the message, any HTTP response will do. > > > > Actually, I have to take exception to this. A WS-RX ack covers the > > entire range > > of messages within a Sequence. It has been designed in this manner > > to ensure that > > the SequenceAcknowledgements need not be sent reliably. If a > > SequenceAcknowledgement > > is lost in transit between the RM Destination and RM Source, or if a > > given SequenceAcknowledgement > > cannot be transmitted because either the RM Source is unavailable at > > the time, or > > because the network is impaired, then a subsequent > > SequenceAcknowledgement will > > provide the same information. > > > > Thus, in the case you describe, in which there is no failure, it may > seem as > > if the 202 with no entity body would suffice. However, as we all > > know, s#!t happens. > > The 202 response may never reach the HTTP client, in which case the > > source would > > be left in an in-doubt status with regards to whether the message > > carried in the > > HTTP request message were successfully received. > > > > > > > > Case 2 seems much more useful. In this case the HTTP response > > > (whatever it is) means you got the message, while the WS-RX ack > > > means something else, e.g., you were able to forward it on and it > > > reached its final destination. > > > > That is not the intent of the SequenceAcknowlegement. A > > SequenceAcknowledgement > > means that the message has been successfully *received* by the role of > > RM Destination. It does not in any way infer whether the message has > been > > processed. It only means that the role of RM Destination has assumed > > responsibility > > for delivering the message to the application destination (eventually). > > > > > > > > >From a SOAP MEP point of view I don't see much difference between 1 > > > and 2 (except that 1 always expects a non-empty 202). Case 2 can be > > > viewed as abuse of HTTP, particularly since 202 seems to be aimed at > > > conveying status of the particular HTTP response. On the other > > > hand, one can argue that the sender is legitimately POSTing messages > > > to be delivered and the receiver is legitimately responding with > > > status information. It really depends on how you view the flow, > > > which is why I tend to fall back to whether the wire-level > behavior works. > > > > > > Actually, there's an interesting third option, a variant of the > > > second. Here's one possible example: > > > I send you a message > > > You send back an empty 202. > > > I send you a request message > > > You send back a response, with a 200. That message also happens to > > > contain a WS-RX header with an ack for my first message. > > > > You can do that, yes. However, it is not necessarily the case that > > a "oneway" message (from an application perspective) would be followed > > by a request/response such as you describe. > > > > > My personal feeling (at the moment) is that case 2 is not quite > > > right, because of the semantics defined for 202, but would be > > > alright (and in line with case 3) if the acks had a 200 status. > > > This takes the view that the acks are a SOAP-level response just > > > like any other. Whatever's receiving and dispatching the response > > > has to take this into account: It might get back a 200 response that > > > doesn't filter up to the application. Put another way, the various > > > WS* headers may not all be visible to the application, and given > > > this, it's possible that there's nothing left after they've been > > filtered out. > > > > > > The key question here in any case is, does the receiver of a message > > > know enough to handle it appropriately? I'm particularly concerned > > > > I should certainly hope so! > > > > > about non-empty 202 messages in this respect, and I'd like to see a > > > bit more detail about how they would be dispatched. > > > > What is the antecedent of "they" in this context? Are you referring to > > the handling of a SOAP envelope carried on an HTTP 202 Accepted > response? > > Are you referring to the processing of the SOAP envelope carried in the > > HTTP request?
Received on Thursday, 2 February 2006 21:40:55 UTC