Folks,

I'm not sure that adding more comments inline is going to help clarity, so I'll try to make my points standalone here:

1) My view is that binding.sca was intended to imply "the binding that the SCA runtime system will use if you specify no other specific binding"

- implying that a detailed choice will be made by the runtime
- implying that you the assembler/developer don't really care - all you want is that references should connect to the target services in some way that works

2) I agree with Jeremy's point that in many cases, you don't need to explicitly specify <binding.sca/> in your compositions - since it's the default, you "get it for free"

3) HOWEVER, if I specify <binding.ws/> or some other specific binding on a component, that does mean "the runtime must use the ws binding for this service / reference" and the runtime is NOT allowed to choose any other binding. This allows developers/assemblers to be specific about the protocols they want to use, if they so wish.

4) Given the potential to reuse/override implementations in components in a composite, I MAY find myself with an implementation that declares itself to use (say) <binding.ws/> that I wish to use in a context where I don't want to use the ws binding. In this case, I should be able to override the binding specified on the implementation. This could be with <binding.jms/> say - but it could also be with <binding.sca/>. The latter case is useful where I want to say "use the system binding for this one", especially to ensure that wires will work properly for that component.

Wires may be a contract - but whether they are valid is another matter. A wire can be drawn between incompatible endpoints - in that case the Wire is invalid and an error gets raised. Compatible bindings on each end is one requirement, amongst a host of others (eg interfaces must be compatible, policy sets must be compatible)

5) I agree with Jeremy's sentiment that it would be a good idea for an SCA runtime to allow configuration of which protocol would get used for its binding.sca.

6) binding.sca is clearly of no use for services or references which address things external to the SCA System.

To sum up:

- I think that binding.sca has a place, it has some uses
- We should be flexible about which protocol get used for binding.sca

Yours,  Mike.

scabooz wrote:
Replies in line

Dave

----- Original Message ----- From: "Jeremy Boynes" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Tuesday, September 26, 2006 2:20 AM
Subject: Re: Why do we need binding.sca?


On Sep 25, 2006, at 6:47 PM, scabooz wrote:

Sebastien did a good job enumerating the rationale for why the <binding.sca> exists in the specifications. Perhaps your concern is over the name of the
binding, and not the specific reason for its existence?  I could be
convinced that "default" is a bad name, but we'd need a suggestion for
an improvement.


It wasn't really but now that you mention it default does tend to imply a well-known value. I would be concerned users may assume a specific protocol will always be the default (e.g. the original proposal on this thread about making WS the default for the C++ runtime) whereas the goal of the spec is to allow the container to choose which protocol it considers optimal. The semantic is "unspecified" rather than "default" but that is not a good description.


"Unspecified" binding doesn't work for me.  Something like
"built-in", "system", "fabric", "ESB" gets closer to the concept.


<binding.sca> differs from a wire in the fact that a wire only denotes
a relationship between two components.  A binding specifies the  message
format/transport-protocol to be used when the given components interact. A wire is only valid if both ends of the wire are using the same (or compatible) binding. The definition of compatible is under construction at the moment.


"Only"? I think a wire is more emphatic than that - it /defines/ a relationship between two components. As you say, a binding specifies the message format/transport protocol which is essential for non-SCA interactions but which is also the very thing we are trying to abstract away in the assembly model for SCA-to-SCA relationships.


Agreed.  The <binding.sca> concept does that very well, especially when
you don't even need to type it into the XML.


Validity is also true for <binding.sca> but unlike a wire a binding is only attached to one party in the relationship making compatibility and validity harder to achieve. With the ability to decompose a composite to different address spaces potentially implemented by different SCA runtimes


No. I'm reading "different SCA runtimes" to mean vendor1 and
vendor2 SCA runtimes. There is no federation of the SCA
System concept across different SCA runtimes.  <binding.sca> is
bounded by the SCA system and therefore bounded by a vendor
runtime implementation.  I know that SCA system is vaguely defined
in the specs right now.  However, my point still holds.

, use of a _default_ binding is insufficient as the platforms hosting the related components may have different _defaults_ with no guarantee of interop.


That's precisely the point.  <binding.sca> is non-interoperable by
definition, which means that a vendor can provide value add, optimized
capabilty without affecting the portability of the SCDL or the business
service/consumer implementations.  If vendor1 and vendor2 want to interop,
their services/reference must choose an interoperable binding. There is no
wire in this case that can express the relationship between the
service/reference because the relationship occurs outside the scope of SCA.
Web services would be my recommendation for an interoperable binding.

However, the presence of a wire in the assembly is a clear contract that the SCA system must obey or default on [sorry, couldn't resist]



When two components are related via a reference-value or via a wire, the <binding.sca> capability (I'm trying hard not to say default binding) is automatically associated with the relationship. IMHO, the <binding.sca> element need not be
specified.


I agree - in fact I would go further and say that <binding.sca> need / never/ be specified, making it a redundant concept that could be removed from the spec.


Except for the cases that Sebastien noted which lead to the need to
override/remove/change a binding specified lower in the composition
hierarchy.  If there is an alternative way to accomplish this, then I
would be very open to hearing it, but the concept
must continue to exist.  Don't you think it would be funny to have a
first class concept without an XML serialization?

In any case, when the policy work gets straightened out (there's a draft
spec now) we'll see the need to attach policy to bindings. Attaching policy
to <binding.sca> will be a 1st class concept also.  I'd hate to have a
different way to attach policy for the "builtin","system","fabric","ESB"
binding as compared to every other binding in the world.

I would expect that the vast majority of SCA services will be wired  and
composed using the _default_ binding, without explicitly stating it.

There are several known issues in the Assembly spec that relate to the
_default_ binding, especially in the context of recursive composition, and
with binding overrides in general.  Proposals are being discussed.


--
Jeremy


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to