- From: Doug Davis <dug@us.ibm.com>
- Date: Wed, 25 Mar 2009 20:12:52 -0400
- To: Bob Freund <bob.freund@hitachisoftware.com>
- Cc: public-ws-resource-access@w3.org, public-ws-resource-access-request@w3.org, "Chou, Wu (Wu)" <wuchou@avaya.com>
- Message-ID: <OF93CF644E.B9BAFEE8-ON85257584.0081C8E3-85257585.00012FFF@us.ibm.com>
In thinking about this discussion I'd like to compare this to a hypothetical situation... Let's say that when WS-Addressing was first created, instead of a single wsa:ReplyTo EPR/Header the authors created two of them - one for async responses and one for sync responses. After all, they are very different message exchange patterns - in one case you need a real (addressable) URI, in the other you don't, you'll always use the current transport's back-channel. So, let's say we had this: <wsa:AsyncResponse> <wsa:Address> xs:anyURI </wsa:Address> <wsa:Ref-Params...> ... </wsa:AsyncResponse> and <wsa:SyncResponse> ... </wsa:SyncResponse> If we had this situation and then someone suggested that we combine them I could hear a lot of the same comments being made. We're overloading too many things. How can I tell what's going on? The semantics of these two things are so different, you can't possibly combine them. The application must know how the messages are being sent. And yet we do have these two very different message transport mechanisms combined into one. The concept of an EPR handles both of these situations very well. It even deals with other messaging patterns. For example, in WSDD we see it dealing with broadcasting. Composing in with MC we allow for polling-style delivery. Making the uri something like "java:myClassName" (in some soap stacks) will invoke local services and never hit the wire. And there are probably others. The point in this is that the EPR was designed to convey the notion of not just where to send a message but how to send a message. And this single entity manages to do this well for all other WS-* specs and for all types of messages being sent (including WS-Notification). This entity allows for the application (assuming it wants to) to remain totally unaware of the details of the target service- all it needs to do is pass around an EPR and some lower-level piece of code (the WS-Addressing layer) will automagically deal with the details of how to actually interact with the target service. So, I still come back to the same questions I had on this week's call: - why is WS-Eventing so special that it can't reuse the EPR as is? Why does it need a "mode" attribute when no one else seems to? - what is fundamentally different between NotifyTo and ReplyTo ? Any message exchange pattern that I would want to do with one of them I can imagine a case for it being used in the other. Wu, And I'd ask you to look at the AcksTo EPR in WS-ReliableMessaging [1]. It is not an EPR where "Responses" go. Its meant to be used for new (one-way) messages being sent by a service - basically the same thing as PushMode+NotifyTo. And in that specification that had to deal with sync, async, addressable and non-addressable destinations - the same way WS-Eventing does. They managed to solve it by reusing the EPR concept - as is. [1] http://docs.oasis-open.org/ws-rx/wsrm/200702/wsrm-1.2-spec-os.html thanks -Doug ______________________________________________________ STSM | Standards Architect | IBM Software Group (919) 254-6905 | IBM 444-6905 | dug@us.ibm.com The more I'm around some people, the more I like my dog. Bob Freund <bob.freund@hitachisoftware.com> Sent by: public-ws-resource-access-request@w3.org 03/25/2009 05:55 PM To "Chou, Wu (Wu)" <wuchou@avaya.com> cc public-ws-resource-access@w3.org Subject Re: R: Issue 6692 (re-send for the list) Wu, Yes, I am guessing that you meant 6432, no worries. Here is some of what I think might be blocking a consensus on this issue. There may be more, but this is my guess. 1) It is my understanding that in order to receive a notification, one must subscribe. That would make all notifications solicited, doesn't it? Are you anticipating out-of-band communication of EPRs to which the Subscription Manager might send notifications? 2) The definition of Push Mode "A delivery mechanism where the source sends event messages to the sink as individual, unsolicited, asynchronous SOAP messages." There are two issues with this definition I think. a) unsolicited: well, see above, there exists a subscription, so the notification have been solicited. b) Asynchronous: Asynchronous with respect to what? The underlying protocol back channel? Other activity? It is a very difficult term and needs MUCH clarification before it has meaning. So when the above (in the minds of many who have been through the WS-Addressing debates and other protocols based on WS-Addressing, the definition of push mode becomes: "A delivery mechanism where the source sends event messages to the sink as individual, SOAP messages." Now this might be contrasted with a hypothetical "Pull Mode" definition, which is not defined, but I will make an attempt: Pull Mode "A delivery mechanism where a client retrieves a notification by querying the Subscription Manager" However, the spec has not defined a message that might retrieve a notification, but if it did, then the replyTo in that message might be wsa:anonymous, in which case the response would be expected on the transport back-channel, or maybe if replyTo were a full addressable uri, then the message would be returned to that address. This is what a lot of folks think of as an asynchronous message, it is asynchronous with respect to the connection that contained the request, or as sometimes described, asynchronous with respect to the underlying transport. But, we have not defined it, but note that it does change the behavior and add constraints and demands to the subscription manager. It is conceivable that queueing behavior of this hypothetical pull mode might be implementation specific with no protocol defined quality of service defined to allow for the broadest possible scope of implementation. At this point Eventing has really defined only one mode. which is labeled push, and nowhere is there defined anything (yet) concerning queueing behavior. Now suppose we deal with the issue concerning a non-addressable notification destination and suppose that we might try to achieve that by composition with MC. MC usually is implemented in conjunction with WS-Addressing. Usually the higher level protocol is unaware of the use of MC, it just sits on top of it. much the way that the higher level protocol is unaware that it is sitting on on any particular implementation of tcp/ip or http for that matter. It is just a form of transport that has the effect of making communication with non-addressable endpoints possible. It is true that it works by polling, but it does it by polling MC, not the higher-level protocol. There is no quality of service guarantee and yes, MC does require a fifo implementation within it, but size and other characteristics are implementation specific. The client protocol would see a notification just as if it were receiving it without MC, it is just that MC polled for it. So in this regard, there is no difference between "Push" mode to an addressable endpoint and this method of dealing with non-addressable endpoint with MC. I have a few observations concerning the debate: A) Li is correct, that the delivery would not be instantaneous, but it is not instantaneous with http over tcp/ip either since the speed of transport, the distance latency or even the number of re-tries are unknown. I can imagine deep-space notifications where the time would be on the order of months B) polling is like sampling, you have to poll at a rate high enough to keep up with the anticipated message rate. There is no way around this unless several notifications are sent in one message. One possible difficulty with this is that eventing today states that there are no constraints on notification messages. What would happen if successive messages had different mime types? http allows for only one. So in that case, unless constraints are imposed, messages need to be sent one by one anyway. C) Anything other than the one form of notification delivery we have defined will probably require additional protocol messages and indeed extend the protocol in a behavioral sense. D) There are very few ways to send messages to a non-addressable endpoint. The two main techniques are polling and tunneling. It might be most convenient that we allow users to pick whichever they choose. To accommodate current implementations that have a push mode defined, I might suggest that we add an extensibility point in place of that attribute to allow for use of it, but I don't think the protocol cares. I hope that this is helpful -bob On Mar 25, 2009, at 3:26 PM, Chou, Wu (Wu) wrote: Bob, I would like to share my thoughts and clarify the point I made in the WG call regarding issue 6692 (removing "mode") and the use cases of non-push mode event delivery, Issue 6542 (makeConnect) is a concrete use case of non-push mode event delivery. Since it won't fit in WS-E push mode definition, it proposes/needs to change WS-E push mode definition/semantics. As discussed extensively by Doug, Li, Geoff, etc. as well as the question you raised, makeConnect needs to pull event from source and it is not WS-E push mode, e.g. it is not an "unsolicited" event delivery that controlled solely by the event source as specified by WS-E push mode specification. "Push" and "pull" are two distinct concepts with well defined semantics. This is even more so in WS-E with its definitive push mode semantics specified in the specs (Section 2.2 Terminology), e.g. it must be [unsolicited], [individual], [soap binding], [asynchronous], [notification] to send event from source to the sink. I am sure there are many other cases that won't fit into WS-E push mode. The point I would like to make is: "redundancy" issues should be dealt with after we finish all proposals with new semantics to WS-E, since redundancy won't hurt the validity/applications of the specs. We need to see the whole tree before trimming a branch off, because "redundancy" may change as new semantics being added. Moreover, we should deal "redundancy" with the sensitivity that WS-E has been widely implemented. It influences many standards from various standard bodies. Unless it is absolutely painful and necessary, I would hope to avoid minor redundancy changes which have no impact to application semantics. Many thanks, - Wu Chou. Wu Chou, IEEE Fellow, Ph.D. | Director |Avaya Labs Research | AVAYA | 233 Mt. Airy Road| Rm. 2D48 | Basking Ridge, NJ 07920 | Voice/Fax: 908-696-5198 / 908-696-5401 | wuchou@avaya.com
Received on Thursday, 26 March 2009 00:13:33 UTC