- From: <noah_mendelsohn@us.ibm.com>
- Date: Mon, 30 Jan 2006 14:46:40 -0500
- To: David Hull <dmh@tibco.com>
- Cc: Mark Baker <distobj@acm.org>, David Orchard <dorchard@bea.com>, "Patrick R. McManus" <mcmanus@datapower.com>, Rich Salz <rsalz@datapower.com>, xml-dist-app@w3.org
David Hull writes: > If you just need to send a message on a best-effort basis, use F&F Yes, though if you implement it on JMS, WebSphereMQ (the protocol formerly known as MQSeries), etc. then that best effort will be mighty reliably when compared to another FAF-capable transport such as UDP. I think that one-way works on both. It's an interesting question whether one should bother naming two one way MEPs that differ only in the likelihood of delivery in the face of short-term network trouble. My inclination would be to define at most one FAF MEP and leave it as a quality of service of the binding what the likelyhood of delivery would be. I think that such an MEP could be well implemented on UDP, JMS/MQ, SMTP, probablky XMPP, and probably others. Indeed, if anyone wanted to use SOAP at a very low level and for messages of limited size, I suspect it would be implementable directly on IP as well. -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 -------------------------------------- David Hull <dmh@tibco.com> 01/27/2006 11:18 AM To: noah_mendelsohn@us.ibm.com cc: David Orchard <dorchard@bea.com>, Mark Baker <distobj@acm.org>, "Patrick R. McManus" <mcmanus@datapower.com>, Rich Salz <rsalz@datapower.com>, xml-dist-app@w3.org Subject: Re: The deep difference between request/response andfire-and-forget noah_mendelsohn@us.ibm.com wrote: David Orchard writes: More to the point, I don't see why we'd need an request-optional- soap-response mep AND a f-a-f mep where f-a-f is interpreted as you suggested on the server. ...because when we implement SOAP on true FAF transports like UDP, and maybe some flavors of Jabber (I have to go back and look at that) we'll want the true FAF MEP and probably not the Req/Resp (I.e. because Req/Resp, as we keep reminding ourselves, requires the transport to know how to address responses, which in general UDP does not provide.) As I've argued, I believe that the request-response MEP provides two interesting features: correlation and transactionality. Further, these are independent. You can have a transactional one-way flow (you know that either the message arrived or something bad happened), and you can have non-transactional request-response (a.k.a. two correlated one-ways). HTTP provides both, and the request-response MEP promises both. Even with an optional response, it promises transactionality, and promises correlation if there is a response. By contrast, F&F would be aimed at non-transactional one-way flow. In summary: If you just need to send a message on a best-effort basis, use F&F If you need to send a message and know that it arrived, as we now have it framed, you would use request-optional-response but arrange that there would not be a response. If you need to do a request-response on a best-effort basis, use two correlated one-ways. I've suggested using the [return address] feature here to cover the various protocols that provide a return address but no transactionality If you need to do a request-response and know that it worked, use the request-response MEP. Unfortunately, the last will only work if you can do everything in one operation of the underlying protocol, i.e. a single HTTP operation. Even in the case of "asynchronous request-response" over HTTP, you've lost the transactionality. In this case, HTTP is little different from everything else. You can tell the request arrived, but if you never receive a response, you don't know why, or even that there is an error. The server might just be slow. You can set a timeout, retry etc., but this all has to be above the SOAP level. 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. If we model this as F&F, we've lost that information. If we model it as r-o-r, we're implying that <message/> can provide transactional request/response. It can't. It can do the correlation, but it can't promise transactionality. It might be possible to finesse this particular case by using <iq/> if a response is expected and <message/> if not, but then the binding would have to figure out whether a response is expected. I think Rich has argued convincingly against this. FAF is the natural MEP and should be used on one-way transports; Req/Resp and/or Response-only (which is more properly named Request/ResponseWithEnvelopeInResponseOnly) are the natural MEPs and should be used on Request/Response protocols like HTTP. -------------------------------------- Noah Mendelsohn IBM Corporation One Rogers Street Cambridge, MA 02142 1-617-693-4036 --------------------------------------
Received on Monday, 30 January 2006 19:46:52 UTC