- From: David Hull <dmh@tibco.com>
- Date: Fri, 27 Jan 2006 12:43:18 -0500
- To: Rich Salz <rsalz@datapower.com>
- Cc: xml-dist-app@w3.org
- Message-id: <43DA5BB6.1040600@tibco.com>
Rich Salz wrote: >> I'm also concerned about protocols like XMPP <message/>, which >> provide a one-way transactional operation. That is, IIUC, you can >> tell whether your <message/> arrived or not even if you're not >> expecting a response. > > > I don't think so. If the TCP layer detects a failure and reports it > back up to the next layer, you have no way of knowing how many bytes > of any pending messages were actually received at the other side. > > This is a limitation of any TCP-based protocol -- the layer using TCP > needs to have an explicit ACK. TCP is reliable as long as nothing > goes wrong. I think we're saying the same thing. My criterion is that you either know your message arrived safely or that /something/ bad happened. That would include "I don't know you got it but you actually did." If you know there's a failure you can then take extraordinary action. The practical difference is between "I can't rely on anything here so I need to build acknowledgment/retries etc. on top of it before the application layer can rely on anything (assuming it needs to)." and "This is generally reliable so if anything actually does go wrong, it's probably worth escalating." This all assumes that the deployment is reliable enough that failures are reasonably rare and are generally a signal that something noteworthy is wrong. This is a good assumption for *TP, but not a good assumption for, say, UDP or certain messaging environments. I'm asserting that it's probably a good assumption for XMPP. If my message doesn't get to you, it's probably because of you're not there or I have the wrong JID or something similar (which I probably need to know about) and not because of some transient failure of the network (which, up to a point, I don't need to know about). > > /r$ >
Received on Friday, 27 January 2006 17:43:57 UTC