- From: David Hull <dmh@tibco.com>
- Date: Mon, 17 Oct 2005 15:24:55 -0400
- To: "Conor P. Cahill" <concahill@aol.com>
- Cc: WS-Addressing <public-ws-addressing@w3.org>
- Message-id: <4353FA87.30105@tibco.com>
Conor P. Cahill wrote: > > In working on using EPRs, we have run into several cases where EPRs > would be much more efficient if we could put multiple addresses int > one EPR (meaning that the recipient can use any of the Addresses). > > The only way to currently do this is to send multiple EPRs with > everthing other than the address duplicated across the EPRs which is > not very efficient, nor does it clearly have the same semantics unless > the client does a complete EPR comparison to determine that the > remaining data is the same. On the one hand, duplication across instances of a given structure is a generic problem. If the only problem is to eliminate duplication across a set of EPRs that only differ in their [address], then one generic solution is to include the duplicated material by reference instead of by value. Another is to define a special form for generating a set of instances (in this case from a set of [address] values and a single reference parameters and metadata). Either approach makes it clear that the duplicated material is the same object, as opposed to being syntactically identical by accident. On the other hand, as has been pointed out, the proposed change of having multiple [address] fields in the same EPR says nothing at all about the semantics of those addresses, or at least it doesn't without significant further work. All that we would know is that some set of [address] values was packaged together with some (possibly empty) [reference parameters] and [metadata]. It might be a reasonable inference that each [address] value is associated with all the [reference parameters] and all of the [metadata], but even this is just an inference. Going further than this, for example, defining a "try all and use the first that answers" policy, is not even a reasonable inference without further context. I don't see a meaningful semantic difference between "when you see several EPRs, try to connect to all of them and shut down all but one (and presumably fault if none answers within a given time ...)" and "when you see an EPR with several [address] values, connect with each one, using the [reference parameters] and [metadata] given in the rest of the EPR, and shut down all but the first one that answers (and presumably fault ...)", except that the first is more flexible. The second approach is effectively constructing a set of EPRs anyway, by combining each of the [address] values with the constant [reference parameters] and [metadata]. >From an architectural point of view, the first alternative seems simpler. EPRs are the unit of currency in WSA. Trying a set of EPRs, as opposed to trying a set of addresses in a given EPR, generalizes smoothly to the case where the reference parameters or metadata don't happen to the be the same. An implementation built this way will be able to handle alternate endpoints more flexibly than one that insists that only the address may differ. If you accept that at the end of the day, it's all EPRs, then the only difference is how to represent several EPRs that happen to differ only in their [address]. If it helps, I wouldn't be against defining (separately from WSA proper) something like <wsaext:MultipleEndpointReference> <wsa:Address>xs:anyURI</wsa:Address>+ <!-- Note, [1 .. *] --> <wsa:ReferenceParameters>... </wsa:ReferenceParameters> ? <wsa:Metadata> ... </wsa:Metadata>? <xs:any/>* </wsaext:MultipleEndpointReference> for some value of "wsaext", as an abbreviation for a set of EPRs that differ only in [address], but I don't see that this group could take on even that much now. I agree with everyone else who has said we're way to late in the game to consider either such change without a very compelling justification. > > The need for multiple addresses is driven by our need to support > clients communicating on unstable networks, with geographically > dispersed clusters, etc. One of our applications in particular is > configured to initiate the connection on each of the addresses and > when one answers, shut down the others. > > To be clear, I am asking that the working group consider allowing the > Address element in the EPR to be a multi-occurance element > (maxOccurs="unbounded"). > > Conor
Received on Monday, 17 October 2005 19:28:54 UTC