- From: Don Mullen <donmullen@tibco.com>
- Date: Thu, 23 Jan 2003 12:46:20 -0500
- To: www-ws-arch@w3.org
- Cc: Amy Lewis <alewis@tibco.com>
I think this is applicable to some of this discussions we had in WS-Arch yesterday on MEPs. Thanks, Amy. Don -----Original Message----- From: Amelia A. Lewis [mailto:alewis@tibco.com] Sent: Thursday, January 23, 2003 10:47 AM To: WS-Desc Subject: Some notes on the Request-Response MEP, prompted by asynchronicity I should prolly copy the xmlp and wsarch groups on this, but we'll start here, since wsdesc is talking about MEPs right now. Let us say, for the sake of argument, that I want to set up a binding for a web service that runs over Joe Random Protocol (otherwise known as JRP (note: this is simply a made-up name for an example, because the actual protocol doesn't matter; only its characteristics matter)). JRP is asynchronous. That is, for the purposes of this discussion, it is not possible, in JRP, to send the response back over the same open socket that was used to deliver the request. So let's think about the consequences: 1. Where do I, as the service, send my response? 2. What do I need to do in order to associate this particular response with that particular request? 3. How long do I have to respond? 4. As a client, how long should I wait before I decide that I'm not going to *get* an answer? One notes that the SOAP 1.2 Request-Response MEP does not answer any of these questions explicitly. It is, in fact, designed for use with HTTP. Here are the answers for HTTP: 1. The other end of the open socket. 2. If necessary, create a key from the server:port/client:port tuple. But the client will know that the response received on the open socket is associated with the request sent on the open socket. 3. Depends on the stack. As long as the socket stays open. 4. Until the socket closes; depends on the stack. Or, in other words, the protocol binding can answer all these questions, for a synchronous protocol. The questions become a little more open over JRP. 1. JRP has addressing conventions. Typically, each message contains a source address. It *may* contain a response address. Either the protocol binding or the service is going to have to specify how the priority is worked out. In this case, maybe we can specify it in the protocol: response addr if it exists, source otherwise. 2. JRP has an optional message ID mechanism. We'd better require it. Moreover, we also have to require the message reference mechanism. So every request will have an ID, and every response will have both an ID and a reference ID which identifies the request message. 3. Ouch. I don't think that a protocol binding can specify this. Looks like we need to ask those nice people at wsdesc how one can represent a message timeout per-operation (or between any two messages in an operation? ). Maybe a service could set a default? But it isn't reasonable for the JRP binding to establish timing; it's going to be at least service-dependent, and prolly operation-dependent. 4. As in 3. It sort of needs to be in the WSDL, doesn't it, so that the client can know when to give up. More generally, of course, we can speak of the "termination conditions" for a particular exchange pattern. Time is almost always one of those, although it often represents an abnormal termination (but not a very exceptional one, given reliability issues with the network). I thought that this would be worth mentioning now, as the wsdesc group starts thinking of abstract MEPs. A whole collection of "abstract" MEPs that have implicit ties (like SOAP Request-Response) to a synchronous protocol won't really help those of us who want to try to develop bindings for other protocols. And we're likely to let people share our unhappiness .... Amy! -- Amelia A Lewis Architect TIBCO/Extensibility alewis@tibco.com
Received on Thursday, 23 January 2003 12:51:19 UTC