2016/05/28 - Apache Tuscany has been retired.

For more information, please explore the Attic.

 
 Apache Tuscany > Home > SCA Overview > SCA Native > SCA Native Documentation Menu > Architecture Guide User List | Dev List | Issue Tracker  

High level architecture view of SCA Native

Tuscany SCA Native consists of the kernel and extensions.

The kernel loads any .composite, .xsd, .wsdl or
.componentType files found under a directory defined by the
TUSCANY_SCACPP_ROOT environment variable. The kernel also loads any
extensions found in the Tuscany extensions directory (found in the
directory specified by the TUSCANY_SCACPP env variable). The kernel
inspects the .composite files and checks that any required extensions
that the SCA app uses are loaded, works out how the components are
wired together, and then passes the details of the composite to the
appropriate extensions. E.g. if the SCDL contains a
<implementation.python> element, the contents of that element are
passed to the Python extension which will load a defined script, etc.
When the SCA app is invoked (via a local client call or a SOAP or REST
service binding being called) the kernel uses the appropriate
extension to invoke the right methods in the component implementation
code.

The language binding extensions (C++, Ruby, Python, PHP) provide
wrapper and proxy code. The wrapper code wraps the component
implemented in that language, initialising the component
implementation, converting method arguments to the correct types and
invoking the defined method with the converted arguments. The proxy
code allows the component to call it's references, providing objects
that look like standard objects in the component language, but which,
when called, convert the method arguments from the language types and
invoke the referenced component's wrapper code to invoke the component
itself.

The service and reference binding extensions (SOAP/Axis2C, REST)
provide service and reference code. The service code allows Tuscany to
run within a container as a service that can be invoked (e.g. as an
Axis2C SOAP web service). The reference code allows Tuscany to call
other services (that may or may not be other Tuscany services) using
that technology to make the call out (e.g. a SOAP call to a Web
Service).
See the various samples we have for examples of all this.