- From: Gilbert Pilz <gilbert.pilz@oracle.com>
- Date: Wed, 08 Jul 2009 10:50:05 -0700
- To: Geoff Bullen <Geoff.Bullen@microsoft.com>
- CC: "public-ws-resource-access@w3.org" <public-ws-resource-access@w3.org>
- Message-ID: <4A54DC4D.9010607@oracle.com>
Comments inline . . . On 7/7/2009 8:46 PM, Geoff Bullen wrote: > > Hi Gil, > > Thanks for these examples. Can I share one with you please? > > > > Let’s look at order of processing. > > Will this: > > a) > > <wse:Delivery> > > <X /> > > <Y /> > > </wse:Delivery> > > Always be guaranteed to produce the same results (subscription or > fault) as: > > b) > > <wse:Delivery> > > <Y /> > > <X /> > > </wse:Delivery> > It depends upon how the extensions indicated by <X> and <Y> are specified. If either extension-X or extension-Y are specified to take each other into account, it is possible for the order to be significant and a) and b) could produce different results. To the best of my knowledge, there are no existing extensions to any WS-* specifications that work this way, but it's possible. > > > > Where in the spec can I see this guarantee defined? > > Note a) and b) could be compatible or incompatible extensions. > You can't see this behavior specified anywhere in the WS-Eventing spec nor should you because *it has nothing to do with WS-Eventing*, it is up to the authors of the extensions in question. I've said this before and I'll say it again (and again, and again . . . until people understand); within the extension framework defined by WS-Eventing (extension points defined in XML Schema, ignore unknown extensions, etc.) you cannot limit what extension authors are allowed to do. Extension points are an admission to the world that "we don't know everything"; there are use cases for WS-Eventing that we simply can't imagine. Given this admission it is illogical to try and limit how extensions are expressed (e.g. you must use a single QName with no child elements and no more than 3 attributes) because, since we don't know everything, we have no way of knowing that these limitations won't impact the ability to implement an extension (e.g. what if you really needed child elements or 4 attributes to implement the extension?) > > > > What about between implementations? > > Is a) guaranteed to produce the same subscription or fault across > implementations of Eventing? > Again, this has nothing to do with WS-Eventing and everything to do with the specifications of extension-X and extension-Y. > > > > Note that in the original spec using the mode attribute to define a > new mode MODE_X_Y would allow such a guarantee of interoperability. > MODE_X_Y also required some third-party to define and bless MODE_X_Y as the combination of extension-X and extension-Y. This extension model is appropriate for industry vertical profiles like WS-Man but completely inappropriate for general purpose infrastructure specifications like WS-Eventing. > > > > Thanks, > > Geoff > > > > *From:* public-ws-resource-access-request@w3.org > [mailto:public-ws-resource-access-request@w3.org] *On Behalf Of > *Gilbert Pilz > *Sent:* Tuesday, July 07, 2009 6:25 PM > *To:* public-ws-resource-access@w3.org > *Subject:* Extension Handling 101: Example 4 > > > > OK, here it is. The extended Subscribe request that our mother always > warned us about, Example 4: > > <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" <http://www.w3.org/2003/05/soap-envelope> > xmlns:wsa="http://www.w3.org/2005/08/addressing" <http://www.w3.org/2005/08/addressing> > xmlns:wse="http://www.w3.org/2009/02/ws-evt" <http://www.w3.org/2009/02/ws-evt> > xmlns:frq="http://www.refractory.org/timeDilation" <http://www.refractory.org/timeDilation> > xmlns:dev="http://www.smalldevices.org/evt-ext" <http://www.smalldevices.org/evt-ext>> > <s:Header> > <wsa:Action>http://www.w3.org/2009/02/ws-evt/Subscribe</wsa:Action> > . . . > </s:Header> > <s:Body> > <wse:Subscribe> > <wse:Delivery> > <wse:NotifyTo> > <wsa:Address>http://www.example.com/MyEventSink/OnStormWarning</wsa:Address> > </wse:NotifyTo> > * <frq:Dilate>* > * <frq:TimeScale useRelative="true">* > * <frq:PhaseShift>-73.243</frq:PhaseShift>* > * </frq>* > * <frq:Margin>2009-07-07T15:27:26-0700</frq:Margin>* > * </frq:Dilate>* > *<dev:Pauseable>* > * <dev:Duration>P3H</dev:Duration>* > * </dev:Pauseable>* > </wse:Delivery> > </wse:Subscribe> > </s:Body> > </s:Envelope> > > It bends the mind! How can we possibly figure out how frq:Dilate and > dev:Pauseable are supposed to interact? Will the time dilation shorten > or lengthen the pause duration and, if so, by how much? But wait! We > don't support frq:Dilate. Using the "power of ignorability" granted to > us by the WS-Eventing spec, we can (nay SHOULD!) act as if frq:Dilate > element *wasn't even there*! In which case we can create a pauseable > Subscription (because we support that) and respond as we did in Example 3: > > <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" <http://www.w3.org/2003/05/soap-envelope> > xmlns:wsa="http://www.w3.org/2005/08/addressing" <http://www.w3.org/2005/08/addressing> > xmlns:wse="http://www.w3.org/2009/02/ws-evt" <http://www.w3.org/2009/02/ws-evt> > xmlns:dev="http://www.smalldevices.org/evt-ext" <http://www.smalldevices.org/evt-ext>> > <s:Header> > <wsa:Action>http://www.w3.org/2009/02/ws-evt/SubscribeResponse</wsa:Action> > . . . > </s:Header> > <s:Body> > <wse:SubscribeResponse> > <wse:SubscriptionManager> > <wsa:Address> > http://www.example.org/oceanwatch/SubscriptionManager > </wsa:Address> > </wse:SubscriptionManager> > * <dev:Pauseable>* > * <dev:Duration>P1H</dev:Duration>* > * </dev:Pauseable>* > </wse:SubscribeResponse> > </s:Body> > </s:Envelope> > > And so concludes Example 4. > > - gp >
Received on Wednesday, 8 July 2009 17:50:55 UTC