- From: David Hull <dmh@tibco.com>
- Date: Fri, 27 Jan 2006 11:18:44 -0500
- 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
- Message-id: <43DA47E4.1020207@tibco.com>
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 Friday, 27 January 2006 16:19:42 UTC