On Sep 24, 2006, at 9:32 PM, Jean-Sebastien Delfino wrote:
My understanding is that the SCA default binding is there to handle
the communication with another SCA service without requiring the
application developer to explicitly choose and configure a WS, EIS,
JMS, or whatever other binding.
How does that differ from a wire?
The spec also says that the default binding is not intended to be
interoperable. This gives flexibility to runtimes to implement that
binding in the most efficient way in the context of a given
assembly. I'm currently implementing the Tuscany C++ default
binding on top of Axis2C but in the future we may want to implement
more optimized variants (start to turn on the SOAP MTOM - Message
Transmission Optimization Mechanism for example, or use a
completely different protocol like Jim suggested earlier).
The lack of interop here is one of the reasons that I think this is
problematic. We can't interop with non-SCA services as to do that we
need to know the protocol etc. they use - IOW we need a specific
binding like WS. We can't interop with other SCA systems unless they
happen to use the same default; SCA is designed for large-scale
heterogeneous systems and they are not likely to use the same default
and so to interop between them the user will either need to specify a
wire (if they are centrally administered) or use a physical binding
as if the other side was a non-SCA one.
I don't see how a default binding is useful - a user will either be
decoupled and use physical bindings, or they will have a SCA system
that would use wires.
Whether or not a <binding.sca> element must be present to tell the
runtime that the default binding is used on a composite service or
composite reference is debatable. The implementation I'm working on
does not require you to specify the <binding.sca> element, but I
need a little more work through some scenarios and double check one
more time with the spec documents to make sure that this is right.
It also obviously supports the <binding.sca> element if it is present.
I can see several use cases for the <binding.sca> element:
- When you want to specify a target service for your reference
directly in your composite, right in the reference definition (as
opposed to a wire which will only work from an outer composite).
See section 1.4.2 of the spec for the details.
I think this is a problematic scenario now that we have the recursive
model. This may have made sense with the old module concept but by
embedding address information in a composite you prevent its reuse.
One of the main objectives of the composite change was to allow that
by treating composites as types rather than instances and as such
they should not have such instance-related information.
There is a case for absolute references to non-SCA resources but
those would be associated with real bindings to those services (e.g.
via WS or JMS). Within the SCA domain though the connection should be
done with wires and so there is no need for a non-interoperable binding.
- When you want to override the binding specified on a composite
reference or composite service, for example a WS binding, and
request the default binding to be used instead for a particular
component (because it's optimized for example).
Why would someone use a non-interoperable default binding for that
when they can override with a wire? The SCA system can do more
optimization with a wire where it has information on both ends than
it can with a binding where it only knows one side.
- When you want to specify that a service should be available
through the WS, JMS and the default binding for example, then
you'll explicitly specify the three bindings on your service.
What does it mean to make a service available through the default
binding? It can't be used to talk to non-SCA services or with other
SCA implementations and within a single SCA domain the service is
there to be wired.
I would actually be very concerned if by adding a <binding.sca>
element to a service users were able to bypass the wiring and
connection model of the assembly spec and break the encapsulation a
composite is meant to provide.
There's probably more use cases, but I hope this helps. Maybe other
spec people can also give us their perspective on this?
Thanks for providing them and I think it helps discussion. I haven't
seen though that there is anything so far can cannot be addressed
through the SCA wiring model or through physical bindings when
interop is required. I would suggest we are better off keeping the
model consistent and so should consider dropping the concepts of
default binding and <binding.sca> entirely.
--
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]