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]