The quick answer for both of these is that we've not implemented them yet so there's no code at the moment. Providing support for this is part of the work going on around federation and input to that would be appreciated.

The basic idea is that the federation is divided into two layers:
* a runtime layer with worker nodes that execute components
* a control layer that allocates components to workers

If two components are co-located in the same worker then a local (in- memory) transport is used for any wire connecting them. If, however, they are located in different workers, the control layer selects a transport protocol and then defines bindings for each worker to that transport.

The selection process is driven by many criteria, including:
* explicit intents specified by the user
* explicit policies specified by the user
* implicit intent extracted from the user's code
* implicit constraints imposed by the runtimes, the implementation types, the network topology etc.

IMO, <binding.sca> is really just a XML placeholder that allows users to specify intent and policy during assembly as input to the control algorithm. It's there because the model associates policies with endpoints rather than connections (which I happen to think is a problem but what's written is written).

This is different to other bindings (like binding.ws or binding.jms) that map an SCA endpoint into the physical world to support interactions outside the SCA domain; for example, binding a reference or service to a well-known WS address or JMS queue/topic to exchange messages with non-SCA applications. The presence of such a binding though is input to the selection process (e.g. it provides an accessible endpoint that the domain may choose to use).

I envision the selection process working something like:
* if there's only one valid location for a component, locate it there
* try and co-locate other components where possible
* select the optimal transport for remote connections
* reconfigure the worker nodes based on this new allocation

Naturally there are going to be a number of different solutions for this allocation so we will need some form of cost optimization strategy driven by metrics such as component resource consumption, node SLAs and capacity, network SLA, latency and throughput, and so on. This is not a small problem so to start with I'm assuming we'll require the user to specify where things run and how to connect them (as that's function that they will want anyway).

Back to "where's the code" - currently the two layers are mixed and we are in the process of splitting them apart. The control layer is virtually non-existent as the current code just deals with a single JVM - the initial selection process is just "run it locally with in- memory transport" :-)

Code-in-progress is PhysicalComponentDefinition and PhysicalComponentBuilder which are the parts the worker node requires to define and run a component with it's physical transports. Also WireDefinition which is about defining the physical connection chain between two co-located components. [[note to self, perhaps PhysicalWireDefinition would be better]]

--
Jeremy

On Feb 20, 2007, at 7:18 AM, Valerio Schiavoni wrote:

Hello everyone,
1)
i've been searching for some insights about binding.sca. I found this
thread:
http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev/200609.mbox/ [EMAIL PROTECTED] which actually provides some more details. My question is: where can I find some details about how the runtime will implement that binding? based on what criteria ? is the policy framework anyhow involved in the process, and
if so how -and where can i see some code for this -?

2)
strictly related to my first question, this is extracted from a presentation
on tuscany:

Binding Intents
Declare a set of requirements on a reference such as "confidentiality"
or "ordered delivery" and have Tuscany choose the appropriate
binding (e.g. web services, AMQP, JMS) based on the requirements of
the client and target

how the binding is concretely choosen ? Who is in charge of this ? again,
where could I see some code for this  (if any) ?

Thanks a lot!

valerio
--
http://jroller.com/page/vschiavoni


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

Reply via email to