One more thought: Binding extensions probably need to help create the endpoint and resolve the endpoint references. Different bindings may even have their implementation of the Endpoint/EndpointReference model. For those bindings that support local wiring (for example, binding.sca), the endpoint reference can be resolved to a local endpoint which contains information about the component/service/binding.
Thanks, Raymond From: Simon Laws Sent: Thursday, January 15, 2009 6:31 AM To: [email protected] Subject: Re: [2.x] [DISCUSS] Endpoints HI Raymond Comments in line... Simon On Tue, Jan 13, 2009 at 5:45 PM, Raymond Feng <[email protected]> wrote: Nice proposal. I agree with you on most of the points with a few comments: Let's first fix the model. The SCA spec uses <binding.???> element for two purposes: a) Describes a concrete transmission protocol b) Provides an address for the endpoint When we initially defined the in-memory representation of the metadata, the XML syntax misled us. Now we realize we should an explicit Endpoint model as the WSDL [1] spec does. An SCA service has an interface. Each service can be configured with multiple bindings and each binding binds the interface to a concrete transmission protocol (and message format). The service is made available at a set of endpoints. Each endpoint will have a binding, an address (URI) and the interface. service --> interface (1..1) service --> endpoint (1..n) endpoint --> binding --> address --> interface An SCA reference also has an interface. Each reference will have zero or more references to the endpoints (the binding, address and interface). I prefer to model them as EndPointReference which can be resolved to an Endpoint (or proxy). reference --> interface (1..1) reference --> endpoint references (1..n) endpoint reference --> binding --> address --> interface Ok. I see where you're going with EndpointReference. Works for me. I think we will probably still need some link from the endpoint reference back into the component/reference that owns it in order that the lookup part can work. But lets model it in a bit more detail and see how it looks. Be good to get some interaction diagrams going so we understand. I have yet another wiki page. Started off with just a simple diagram. http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Endpoints. EndpointReference can be mapped into CallableReference and ServiceReference defined by the SCA java spec. It can be used to create proxies to an SCA service. The EndpointReference can be passed implicitly by the runtime or explicitly as part of the business methods. EndpointReference can be serialized into different binding protocols and later on be deserialized. For web service binding, it should be mapped to the WSA EndpointReference. The EndpointReference can be potentially used as the client entry point to the SCA composite. The client can create an endpoint reference with the information about the binding, address, interface and policies and then a service proxy can be created out of that. snip....
