- From: Amelia A. Lewis <alewis@tibco.com>
- Date: Mon, 28 Apr 2003 10:27:28 -0400
- To: "Arthur Ryman" <ryman@ca.ibm.com>
- Cc: www-ws-desc@w3.org, www-ws-desc-request@w3.org
Dear Arthur, Thanks for responding directly. On Fri, 25 Apr 2003 18:04:31 -0400 "Arthur Ryman" <ryman@ca.ibm.com> wrote: > I'd model the service as an aggregation using the R085 endpoint > reference proposal. I'd have the main interface handle admin, and I'd > delegate the notification to another interface so I can use different > protocols for them. *shrug* Okay. But that doesn't reflect the reality that I see there, which is that this is a single service, with two forms of access. In one form, it's stodgily traditional client-server: ask a question (or give a command), get an answer (change the server's state). In another form, the server notifies anyone who cares when its internal state changes. Is the fact that all the information is about a single service important enough to drive a requirement that it be possible to model it as such? > In your example suppose we have the following interfaces: > > customerNotificationInterface - contains customerChange > customerAdminInterface - contains addCustomer, removeCustomer, > updateCustomer, AND getNotificationService > > Here's how getNotificationService is defined. Note that the interface > has an operation that returns the endpoint reference for the > notification interface. Represented as xsd:anyURI, rather than a possibly more complex type? > <message name="getNotificationServiceInput"/> > > <message name="getNotificationServiceOutput"> > <part name="return" type=xsd:anyURI"/> > </message> [snip] > I think this is clearer than WSDL 1.1 since there is no implication > that the ports that appear within a <service> element share any state. > In *sigh* But the point *is* that they *do* share state. It is possible to state unequivaocally that every time addCustomer, removeCustomer, and updateCustomer are completed successfully, a customerChange is delivered on the notification interface. It's the *same* *state*. So ... why does it have to be modelled as a separate service? It seems to me that this is intruding binding information into the > this solution, the notification service is directly related to the > admin service via the getNotificationService operation. In fact, you > don't Yes, but it isn't a notification service, it's just the notification interface to the customer maintenance service. > really even need a <service> element for the notification service > since you can get its location dynamically. Say what? Isn't there a service description somewhere that defines this endpoint explicitly? I hope so; moving too far in the direction of the problems of CORBA/DCOM strikes me as a "solution" already known to have corresponding drawbacks. It's certainly possible to model a single service that happens to be exposed through multiple endpoints implementing multiple interfaces as multiple services instead. I won't deny that it's possible. I merely suggest that it isn't desirable. This is easier: <service name="OneBigService"> <port binding="httpAdminBinding" /> <port binding="mcastNotificationBinding" /> </service> I'm leaving stuff out. But this does, I think, show that it is simpler to model a single service as a single service. Question: suppose we have multiple interfaces (requiring multiple bindings to different protocols in necessarily different endpoints) but none of them provide request/response semantics? I can't go from a service that doesn't have r/r to some other service ('cause I can't ask it where to get that other interface), using the above model. Is this case too marginal to care about? Amy! -- Amelia A. Lewis Architect, TIBCO/Extensibility, Inc. alewis@tibco.com
Received on Monday, 28 April 2003 10:27:20 UTC