W3C home > Mailing lists > Public > xml-dist-app@w3.org > January 2006

RE: The deep difference between request/response and fire-and-forget

From: Christopher B Ferris <chrisfer@us.ibm.com>
Date: Tue, 31 Jan 2006 09:51:26 -0500
To: Noah Mendelsohn <noah_mendelsohn@us.ibm.com>
Cc: "David Orchard" <dorchard@bea.com>, "Rich Salz" <rsalz@datapower.com>, xml-dist-app@w3.org, xml-dist-app-request@w3.org
Message-ID: <OFDCEDD75C.DB976377-ON85257107.0050C791-85257107.00519D15@us.ibm.com>
+1 to all that Noah has said 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

xml-dist-app-request@w3.org wrote on 01/25/2006 08:46:30 AM:

> 
> David Orchard writes;
> 
> > I would say that if closing the connection (wow, I originally typed 
that
> > as if close thing connection..) without waiting for a response is
> > invalid HTTP, THEN that means that HTTP can't do Fire and Forget AND
> > that an application that would be built on Fire and Forget couldn't be
> > deployed on HTTP. 
> 
> Except as proposed by Mark Baker, and others: I.e. wait for the response 

> at the client.  As Patrick McManus points out [1], you're probably 
> carrying more overhead at the client for closing the connection then you 

> might think from the surface syntax of the APIs.
> 
> > To which I conclude this is yet another leaky abstraction. 
> 
> Sure.  The point is not that abstractions shouldn't leak;  they 
> necessarily leak to some degree, as Spolsky said when he set down the 
> "law"[1].  The point is that if your high level abstractions use your 
low 
> level services in the intended manner, it's less likely that the 
> abstractions will leak in a damaging way.  Patrick is pointing out that 
> the low level packet flows that underly TCP and HTTP are optimized for 
the 
> case where HTTP is used in the intended manner, I.e. Request/Response. 
By 
> properly separating Req/Resp from FAF, and using the layers in the 
> intended manner, we greatly reduce the liklihood of "leakage" from 
> low-level TCP packet flows, proxies, etc.
> 
> > I'm strongly against standardizing any MEP that can't be deployed on
> > HTTP.  That would be very very strange to standardize an MEP and not
> > standardize any bindings for that MEP.  It doesn't pass the giggle 
test
> > at all..
> 
> I think you're mixing two things:
> 
> 1) Should all MEPs be intended for use with HTTP?
> 
> Absolutely not.  In fact, the whole reason for MEPs is that SOAP is to 
be 
> usable over a broad range of "transports", and not all of them will 
> comfortably support all MEPs.  However, if we can agree that two or more 

> transports support a one way FAF, for example, then the changes are 
pretty 
> good that the same apps will run on those transports.  So, the whole 
> purpose of MEPs is to have different MEPs supported on different 
bindings, 
> and there's no reason at all from that perspective that HTTP should 
> support one way.  Of course, if you have business reasons for wanting to 

> support one way on HTTP, that's different.  The discussion in this 
thread 
> suggests you can do it, but only insofar as you are willing to have the 
> far end reply with a no content 202 or 204 message, and have the client 
> spin off a thread or use some other means of properly receiving it, so 
> that low level error traffic doesn't confuse proxies, etc.
> 
> 2) Should we define an MEP before there's at least one binding spec'd to 

> use it.
> 
> Perhaps not. I think that's why we didn't do one-way in the first 
version 
> of SOAP 1.2.   David Hull and perhaps others are making the case that it 

> will so obviously be useful to the community that we should put the MEP 
> spec out there.  Either way is fine with me.  I think it's clear that in 

> the particular case of one-way FAF we know the desired MEP semantics 
well 
> enough to risk spec'ing it without doing a binding, should we wish to.
> 
> > Another interesting related question: If it's illegal to close without
> > reading the return HTTP response, does that mean that an HTTP
> > intermediary MUST wait for the next node's response to faithfully pass
> > back? 
> 
> I might need to think more about it, but my initial reaction is: yes, 
HTTP 
> is request/response.
> 
> > Imagine intermediary closes with 202, but next node responds with
> > 200 and body.  If it was legal to close without reading, then an
> > intermediary could interpret the close as signaling that it could also
> > close after sending..
> 
> I could be wrong, but my intuition is that when an HTTP proxy responds 
on 
> behalf of a server, it typically does not also send the request on down 
> the second hop.  So again, a misuse of the HTTP model to even pass the 
> message to the "next node", I would think.
> 
> All these are exposing reasons why req/resp is different than one way, 
and 
> why I think they are best kept separate.
> 
> Noah
> 
> [1] http://lists.w3.org/Archives/Public/xml-dist-app/2006Jan/0139.html
> 
> --------------------------------------
> Noah Mendelsohn 
> IBM Corporation
> One Rogers Street
> Cambridge, MA 02142
> 1-617-693-4036
> --------------------------------------
> 
> 
> 
> 
> 
Received on Tuesday, 31 January 2006 14:51:52 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:21 GMT