On Sep 26, 2006, at 6:26 AM, scabooz wrote:
----- Original Message ----- From: "Jeremy Boynes" <[EMAIL PROTECTED]>
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.

Me neither :-) But then, if we're having problems naming it perhaps we don't need it ;-)


<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.

I'm confused. <binding.sca> seems like a very different concept to all other bindings. They all define protocols etc. but <binding.sca> does not; they allow interaction with non-SCA services, <binding.sca> does not; they support interop, <binding.sca> does not. They need to be typed into the XML, <binding.sca> does not.

That a user does not need to type it in get back to my original question - why do we need it?


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.

Ah - we have a real disconnect here. I agree SCA system is vaguely defined but what is specified is that it is a logical domain of control that spans multiple address spaces. It is the domain of control throughout which SCA concepts (especially wiring) apply. The assembly model does not constrain this to be a single-vendor, single- runtime domain. Now individual implementations of SCA may be constrained to homogeneous or even single address-space configurations but that should be viewed as a limitation of that implementation rather than part of the specification. Other implementations, whether from a single vendor or a federation, can support the multi-platform distribution of an assembly.


, 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.

I think the different ways we view a system may be relevant here. I agree that for any connection that goes outside the SCA system then you need to specify an interoperable binding so can't use <binding.sca> - it is irrelevant if the other services use SCA or not, they are a outside our domain of control and SCA concepts do no apply.

Within a system though things are interoperable by definition. It does not matter whether they come from a single vendor or a federation, to the user there is a single domain in which SCA concepts apply. Within an SCA assembly, a user can specify connections using wires and the implementation must ensure that the relationship define by that wire is materialized. How that is achieved is a function of the implementation(s) and <binding.sca> does not help here.

As soon as you go to a multi-address space configuration then you are going to have different _defaults_ associated with <binding.sca> (be it explicitly specified or not) - I can't think of any implementation that would not use different protocols for remote vs. in-address- space invocations.

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.

I think this may be the crux of the matter here. We have known issues associated with the propagation/overriding of physical binding definitions in conjunction with composition; we did not have those in the 0.9 era.

Don't you think it would be funny to have a
first class concept without an XML serialization

We do: <wire>

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've not caught up with the latest spec but I have been assuming that there would be a way to associate policies with wires for all those cases where there is no <binding> specified at all (e.g. for wires within a composite). Wouldn't that support this without the need to introduce a special binding that is, ironically, different from every other binding in the world?

--
Jeremy






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

Reply via email to