- From: Christopher B Ferris <chrisfer@us.ibm.com>
- Date: Thu, 2 Feb 2006 16:19:38 -0500
- To: David Hull <dmh@tibco.com>
- Cc: "public-ws-addressing@w3.org" <public-ws-addressing@w3.org>, public-ws-addressing-request@w3.org
- Message-ID: <OFD06850B4.31F64061-ON85257109.0074834A-85257109.007527BC@us.ibm.com>
> Does any of this make sense to you? Yes, See http://www.w3.org/Submission/ws-polling/ 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:20:04 UTC