High level architecture view of SCA NativeTuscany 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. |