- From: David Hull <dmh@tibco.com>
- Date: Wed, 01 Feb 2006 11:37:03 -0500
- To: "public-ws-addressing@w3.org" <public-ws-addressing@w3.org>
- Message-id: <43E0E3AF.3070904@tibco.com>
It has been pointed out from time to time that one can layer a request-response MEP over one-way and vice versa. However, this does not mean that either one suffices by itself. At some point, something will have to look at the SOAP envelope with its MAPs and decide what to do on the wire. That something will do different things depending on the features and properties supported by the underlying protocol in use. * If a request message has an anonymous response endpoint: o If the protocol supports request-response a la HTTP, the server should use the response message. o If the protocol supports an explicit return address, a la email and XMPP, the server should send to the return address. The client will have to wait for that response and distinguish the response from other traffic that may arrive at that address. o If the protocol supports neither, and there is no outside agreement defining anonymous, a la plain UDP, the client should refuse to send the request at all. * If no direct response is expected because no response endpoints are anonymous (including the case where there are no response endpoints at all) o If the protocol supports request-response, the sender may ignore any protocol-level response (beyond noting that the protocol-level request arrived safely), or may use it for some other purpose. o If the protocol doesn't support request-response, we're done, noting that ... o In both cases the appropriate party -- which may or may not be the sender -- will have to listen for any responses and distinguish them from other traffic that may arrive at the same address. * The "split" case of some response endpoints anonymous and some not can only occur where anonymous is defined. If the underlying protocol is request-response, then the client may have to distinguish an application-level response from another non-empty protocol-level response. Further, there are different guarantees depending on the underlying protocol: * If the underlying protocol supports request-response o If a response comes back, I know that a request-response operation has completed successfully o If a failure occurs, I know that it occurred (though I may not know exactly what my counterpart thinks of the situation). o If a non-response comes back, I at least know that the message I sent arrived. * If the underlying protocol supports guaranteed one-way delivery, I either know that the request arrived or that a failure occurred (and again, the receiver may or may not think the request arrived). * If the underlying protocol supports neither, I know nothing more than that I tried to send a message and /possibly/ that a failure occurred (i.e., I may learn of some failures but I am not guaranteed to learn of all). Notice that these are properties of /protocols/. The job of /bindings/, as far as I can tell, is to present those properties in such a way that the participants in an exchange know what they need to know -- and only that -- about a protocol. The existing request-response MEP handles the case of request-response with anonymous response endpoints over HTTP and the like. The proposed request-optionally-SOAPy-response variant extends this to handle the cases where there may not be an anonymous response. As I understand it, the proposed request-optionally-SOAPy-/optional/-response (I may get something back and it may be SOAP) is intended to cover /all/ of the above cases, but I don't see how the players will know what to do. If all I know about a binding is that this MEP is supported, then how do I know whether or not anonymous is supported, or whether I can be sure a sent message has arrived, or whether to listen for responses on the sending address? It may seem intuitive that binding request-optional-response over a one-way protocol just means never responding, but given the above that's clearly not the whole story. Put another way, I haven't seen any convincing argument that request-optional-response is appropriate to one-way protocols. If it's to be the universal solution, then that case has to be made. If it's not, then what, exactly, do we plan to do about one-way protocols?
Received on Wednesday, 1 February 2006 16:37:14 UTC