- From: Anish Karmarkar <Anish.Karmarkar@oracle.com>
- Date: Wed, 02 Feb 2005 15:12:53 -0800
- To: Marc Hadley <Marc.Hadley@Sun.COM>
- CC: public-ws-async-tf@w3.org
I like this proposal for doing a pull using HTTP. Two comments below. -Anish -- Marc Hadley wrote: > > I took an action to outline one approach to async request-response using > HTTP. Basically the request is sent as normal as the entity body of a > HTTP POST request but instead of returning the response in the HTTP > entity body, the server responds with a 303 (See other) status code and > includes a Location header that gives a URI from which the response can > be retrieved. The client then uses a new HTTP GET request to retrieve > the response. E.g. > > Initial request: > > POST /StockQuote HTTP/1.1 > Host: stockquote.example.com > Content-Type: application/soap+xml > Content-Length: nnnn > > <env:Envelope xmlns:env="..."> > ... > </env:Envelope> > > Response: > > HTTP/1.1 303 See Other > Location: http://stockquote.example.com/someuniqueidentifier > Retry-After: 120 > Content-Type: text/html > Content-Length: 0 > > Susequent request to retrieve response: > > GET /someuniqueidentifier HTTP/1.1 > Host: stockquote.example.com > > Response: > > HTTP/1.1 200 OK > Content-Type: application/soap+xml > Content-Length: nnnn > > <env:Envelope xmlns:env="..."> > ... > </env:Envelope> > > If the response isn't yet ready the server can send back another 303 > indicating when the request may be retried using the Retry-After header. > Wouldn't it be a 503 (Service Unavailable) with a retry-after header rather than 303 (which says redirection)? > I quite like this approach since it pushes the asynchrony down into the > HTTP layer and doesn't require anything new in WSDL or SOAP. The > existing SOAP 1.2 HTTP binding supports this usage. > I believe we do need something new in WSDL and in SOAP for this. 1) This requires a new SOAP MEP for the POST part (essentially a one-way SOAP MEP). On second thoughts, one could still view this exchange as a request-response SOAP MEP with a new binding (there are only two SOAP envelopes involved) -- in which case I don't think we necessarily need a new SOAP MEP. 2) This requires a new SOAP HTTP binding as the current binding does not support the exchange as described in your email. The current binding is quite restrictive. 3) This requires a new WSDL binding or at least a feature/extensibility. But this is a good reuse of the SOAP-response MEP (depending on how we structure/layer this) and quite simple (from an impl perspective) to do pull over HTTP. My $.02 -Anish --
Received on Wednesday, 2 February 2005 23:13:28 UTC