- From: Martin Chapman <martin.chapman@oracle.com>
- Date: Tue, 13 Aug 2002 14:05:11 -0700
- To: "'Paul Prescod'" <paul@prescod.net>, <www-ws-arch@w3.org>
Firstly lets not argue the usefulness of the factory pattern:-) Secondly in your example, I could get a c_obj from a trader/uddi/directory, without there being any explicit make_c. There is no systematic way to know whether a c_obj provider must provide the factory or whether that is a private act and the object can be advertised/discovered seperatley; nor whether once I create it it can be shared or not. Without some syntax that ties them together you really do have to look at comments/documentation (heaven forbid). Just my personal opinion but I think design by contract/path experession type thingy is a pre-cursor to a choreography/orchestration/collaboration solution. Martin. > -----Original Message----- > From: Paul Prescod [mailto:paul@prescod.net] > Sent: Tuesday, August 13, 2002 12:23 PM > To: Martin Chapman; www-ws-arch@w3.org > Subject: Re: Choreography and REST > > > Martin Chapman wrote: > > > >... > > > > Maybe I have a different definition of choreography, but CORBA (and > > COM and c++ and java and c#) does have this problem. Given the > > following: > > > > Interface example { > > void a (in x:string); > > short b (inout y:short); > > boolean c(out temp:long); > > }; > > > > How can anything know, and hence statically check, the correct > > invocation order(s)? > > Thank you for coming up with some demonstration code. > Consider the following decomposition which statically and > explicitly enforces a particular correct ordering of method calls: > > Interface example { > b_obj make_b(in x: string): > } > > Interface b_obj { > c_obj make_c(inout y:short); > example back_to_example(in blah:int); > } > > Interface c_obj { > boolean doit(out temp:long); > } > > This decomposition isn't just good because it removes the > need for a choreography language. Indeed, this is a minor > benefit. Actually the decomposition has many more important > benefits. Most crucial, the consumer of the service has much > more flexibility about its own composition. Because b_obj and > c_obj are now first-class objects, I can pass those to any > other component anywhere on the Internet and have it work > with them. I don't have to pass a "state" as some kind of > flag. To use WS buzzwords, my relationship with that other > component can be more "loosely bound" because I have less to > tell him about what's going on in the conversation. > > Some other c_obj producer could proceed like this: > > Interface z_obj { > c_obj short_cut_to_c_obj(); > } > > So the relationship between the object types and the > choreography is very flexible and other components brought > into the mix care only about the former and not at all about > the latter. > > In other words, by decomposing I have better opportunities > for reuse of the c_obj abstraction which translates in > networked systems into higher interoperability and less "glue code". > > > ... Aside from unparsable comments > > and documentation (if you're lucky), there is no extra information. > > The fact that the corba community didn't address this > problem doesn't > > mean to say it doesn't exist. > > The CORBA community doesn't have the problem because it is so > easy to design around and in fact it is common to "solve" it > merely as a side effect of good object design. If you feel > you have a concrete case where this model does not work > properly, I would be interested in seeing it. > > > What you need to do is augment interface definitions with extra > > information. Design by contract is one example, but also > there is the > > excellent work done by ANSA in the early 90s called Path > Expressions > > [1], which people are only just re-inventing (or is that > > re-discovering:) > > Design by contract and path expressions are different than > choreography. I would be much more enthusiastic about "design > by contract for web services" than choreography for web services. > -- > "When I walk on the floor for the final execution, I'll wear a denim > suit. I'll walk in there like Willie Nelson, John Wayne, Will Smith > -- Men in Black -- James Brown. Maybe do a Michael Jackson > moonwalk." Congressman James Traficant. >
Received on Tuesday, 13 August 2002 17:13:48 UTC