- From: David Hull <dmh@tibco.com>
- Date: Thu, 03 Mar 2005 14:46:31 -0500
- To: public-ws-async-tf@w3.org
- Message-id: <42276997.9000500@tibco.com>
Has anyone mentioned this yet? Usually when I get a bright-looking idea, it's because I've actually remembered someone else's. More likely, this is what everyone has been talking about concerning correlated one-ways, and I'm just now catching on. Below please read "reply-to: and/or fault-to: as the case may be" for "reply-to:" If I want to do synchronous request/reply, and I have a synchronous request/reply transport, I'm happy. All I have to do is stay out of the way by not including a conflicting reply-to. If I want to do asynchronous request/reply, and I have an asynchronous one-way transport, I'm reasonably happy. I stick in an EPR for my callback as reply-to:, generate a message ID, send the request, and expect a reply in-reply-to my message on the callback EPR. If I want to do asynchronous request/reply, and I have a synchronous request/reply transport, I'm somewhat happy. I do the same as the above, but I also have to synthesize one-way messages as dummied request/replies. More accurately, I have to synthesize a one-way request out of the request/reply I have. The respondent may very well have asynchronous one-way handy (and vice versa for the previous case -- depending on my reply-to: EPR, the respondent may have to synthesize a one-way reply from request/reply). If I want to do synchronous request/reply over an asyncrhonous one-way transport, the situation looks a bit dodgy. Everyone knows exactly what to do: * Establish a possibly ephemeral reply endpoint, or use one we've already established for such purposes. * Generate a message ID (unless the reply endpoint exists only for this MEP). * Send the request. * Block, awaiting a correlated reply on the reply-endpoint (if the reply endpoint only exists for this MEP, then this is trivial, otherwise use the MID) * Return the reply as the result of the synchronous request/reply This can be done regardless of the exact nature of the underlying transport, so we'd like to do this once and for all. Just as it would be nice to be able to make a small change in a binding to enable asynch request/reply, it would be nice to be able to make only a small change to offer a request/reply service over an async transport. The other way to do this would be to define request/reply bindings for each async transport separately (e.g., SOAP/SMTP request/reply), and there may be value in this. Perhaps the transport-specific binding can be more efficient. Nonetheless it seems useful to explicitly define the pattern above generically as a fallback. E.g., if I find or invent a new one-way transport, I define one-way messaging for it and I'm done if I want to be. I then know that anyone can use the generic req/rep over one-way to use my transport for req/rep. The correlation and reply endpoint are handled generically by WSA and SOAP.
Received on Thursday, 3 March 2005 19:47:04 UTC