summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/tuscany-architecture-guide.html
diff options
context:
space:
mode:
authorcoreyg <coreyg@13f79535-47bb-0310-9956-ffa450edef68>2014-11-21 09:30:19 +0000
committercoreyg <coreyg@13f79535-47bb-0310-9956-ffa450edef68>2014-11-21 09:30:19 +0000
commit200a40b332420f94992eb39a6d0ea1cf1490ffc4 (patch)
tree1c76ef1d254c7bfc91128a313d319bd60da9d01e /site/trunk/site-publish/tuscany-architecture-guide.html
parent85f53ab6ab4f664d63774c94b672a875c9e52b8a (diff)
Adding tuscany's website to their svn repo for svnpubsub
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1640879 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'site/trunk/site-publish/tuscany-architecture-guide.html')
-rw-r--r--site/trunk/site-publish/tuscany-architecture-guide.html478
1 files changed, 478 insertions, 0 deletions
diff --git a/site/trunk/site-publish/tuscany-architecture-guide.html b/site/trunk/site-publish/tuscany-architecture-guide.html
new file mode 100644
index 0000000000..bdd1571770
--- /dev/null
+++ b/site/trunk/site-publish/tuscany-architecture-guide.html
@@ -0,0 +1,478 @@
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+ <HEAD>
+ <LINK type="text/css" rel="stylesheet" href="resources/space.css">
+ <STYLE type="text/css">
+ .footer {
+ background-image: url('http://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+ background-repeat: repeat-x;
+ background-position: left top;
+ padding-top: 4px;
+ color: #666;
+ }
+ </STYLE>
+ <SCRIPT type="text/javascript" language="javascript">
+ var hide = null;
+ var show = null;
+ var children = null;
+
+ function init() {
+ /* Search form initialization */
+ var form = document.forms['search'];
+ if (form != null) {
+ form.elements['domains'].value = location.hostname;
+ form.elements['sitesearch'].value = location.hostname;
+ }
+
+ /* Children initialization */
+ hide = document.getElementById('hide');
+ show = document.getElementById('show');
+ children = document.all != null ?
+ document.all['children'] :
+ document.getElementById('children');
+ if (children != null) {
+ children.style.display = 'none';
+ show.style.display = 'inline';
+ hide.style.display = 'none';
+ }
+ }
+
+ function showChildren() {
+ children.style.display = 'block';
+ show.style.display = 'none';
+ hide.style.display = 'inline';
+ }
+
+ function hideChildren() {
+ children.style.display = 'none';
+ show.style.display = 'inline';
+ hide.style.display = 'none';
+ }
+ </SCRIPT>
+ <TITLE>Tuscany Architecture Guide</TITLE>
+ <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
+ <BODY onload="init()">
+ <TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
+ <TR class="topBar">
+ <TD align="left" valign="middle" class="topBarDiv" nowrap="">
+ &nbsp;<A href="home.html" title="Apache Tuscany">Apache Tuscany</A>&nbsp;&gt;&nbsp;<A href="home.html" title="Home">Home</A>&nbsp;&gt;&nbsp;<A href="sca-java.html" title="SCA Java">SCA Java</A>&nbsp;&gt;&nbsp;<A href="" title="Tuscany Architecture Guide">Tuscany Architecture Guide</A>
+ </TD>
+ <TD align="right" valign="middle" nowrap="">
+ <FORM name="search" action="http://www.google.com/search" method="get">
+ <INPUT type="hidden" name="ie" value="UTF-8">
+ <INPUT type="hidden" name="oe" value="UTF-8">
+ <INPUT type="hidden" name="domains" value="">
+ <INPUT type="hidden" name="sitesearch" value="">
+ <INPUT type="text" name="q" maxlength="255" value="">
+ <INPUT type="submit" name="btnG" value="Google Search">
+ </FORM>
+ </TD>
+ </TR>
+ </TABLE>
+
+ <DIV id="PageContent">
+ <DIV class="pageheader" style="padding: 6px 0px 0px 0px;">
+ <!-- We'll enable this once we figure out how to access (and save) the logo resource -->
+ <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"-->
+ <DIV style="margin: 0px 10px 0px 10px" class="smalltext">Apache Tuscany</DIV>
+ <DIV style="margin: 0px 10px 8px 10px" class="pagetitle">Tuscany Architecture Guide</DIV>
+
+ <DIV class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;">
+ <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=45023">
+ <IMG src="http://cwiki.apache.org/confluence/images/icons/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
+ <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=45023">Edit Page</A>
+ &nbsp;
+ <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANY">
+ <IMG src="http://cwiki.apache.org/confluence/images/icons/browse_space.gif" height="16" width="16" border="0" align="absmiddle" title="Browse Space"></A>
+ <A href="http://cwiki.apache.org/confluence/pages/listpages.action?key=TUSCANY">Browse Space</A>
+ &nbsp;
+ <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANY&fromPageId=45023">
+ <IMG src="http://cwiki.apache.org/confluence/images/icons/add_page_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add Page"></A>
+ <A href="http://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=TUSCANY&fromPageId=45023">Add Page</A>
+ &nbsp;
+ <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANY&fromPageId=45023">
+ <IMG src="http://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" height="16" width="16" border="0" align="absmiddle" title="Add News"></A>
+ <A href="http://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=TUSCANY&fromPageId=45023">Add News</A>
+ </DIV>
+ </DIV>
+ <DIV class="pagesubheading" style="margin: 0px 10px 0px 10px;">
+ Added by <A href="http://cwiki.apache.org/confluence/display/~rfeng/Index">Raymond Feng</A>, last edited by <A href="http://cwiki.apache.org/confluence/users/viewuserprofile.action?username=haleh">haleh mahbod</A> on Apr 13, 2007
+ &nbsp;(<A href="http://cwiki.apache.org/confluence/pages/diffpages.action?pageId=45023&originalId=51509">view change</A>)
+
+ </DIV>
+
+ <DIV class="pagecontent">
+ <DIV class="wiki-content">
+ <DIV class="panel" style="border-style: solid; border-color: #6699ff; "><DIV class="panelHeader" style="border-bottom-style: solid; border-bottom-color: #6699ff; background-color: #D5EFFF; "><B>Apache Tuscany SCA Java Kernel Architecture Guide</B></DIV><DIV class="panelContent" style="background-color: #ffffff; ">
+<P><B>This page is work in progress. Thanks for your contribution</B> <IMG class="emoticon" src="http://cwiki.apache.org/confluence/images/icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"></P>
+<UL>
+ <LI><A href="#TuscanyArchitectureGuide-Overview" title="Overview on Tuscany Architecture Guide">Kernel overview</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-Modules" title="Modules on Tuscany Architecture Guide">Modules</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-Artifacts" title="Artifacts on Tuscany Architecture Guide">Runtime Artifacts</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-Recursions" title="Recursions on Tuscany Architecture Guide">Recursive Composite</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-KernelWiring" title="Kernel Wiring on Tuscany Architecture Guide">Wiring</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-KernelBootstrap" title="Kernel Bootstrap on Tuscany Architecture Guide">Bootstrap</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-KernelCompositeHierarchy" title="Kernel Composite Hierarchy on Tuscany Architecture Guide">Composite Hierarchy</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-JavaSCADeployment" title="Java SCA Deployment on Tuscany Architecture Guide">Deployment</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-JavaSCALoaders" title="Java SCA Loaders on Tuscany Architecture Guide">Loader</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-JavaSCABuilder" title="Java SCA Builder on Tuscany Architecture Guide">Builder</A></LI>
+ <LI><A href="#TuscanyArchitectureGuide-JavaSCAmodel" title="Java SCA model on Tuscany Architecture Guide">Model</A></LI>
+</UL>
+
+
+
+<P><BR clear="all">
+&nbsp;</P>
+</DIV></DIV><TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR></TR></TBODY></TABLE>
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-Overview"></A><FONT color="#0099cc">Kernel Overview </FONT></H3>
+
+<P>This is a high level architecture document for Tuscany Java implementation of Service Component Architecture (SCA) which is defined in the specifications located at (<SPAN class="nobr"><A href="http://wwww.osoa.org/" title="Visit page outside Confluence" rel="nofollow">http://wwww.osoa.org<SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>). </P>
+
+<P>This is a live document and is more focused on what is implemented rather than the end vision.<BR>
+Goal of this document is to help users/developers better understand what Tuscany SCA offers and enable them to help with the development if interested. </P>
+
+<P>Tuscany provides the infrastructure for creating, assembling and deploying services in a distributed environment.<BR>
+At a high level it aims to provide for the following:</P>
+
+<UL>
+ <LI>Infrastructure for creating, wiring, deploying and managing service assemblies in single runtime or across runtimes (federated)</LI>
+ <LI>Infrastructure for leveraging qualities of service provided by host environments (transactions, security)</LI>
+ <LI>Support for different host environments: Standalone, Tomcat, J2EE, OSGI (in progress, more can be added)</LI>
+ <LI>plug-points for supporting variety of bindings such as Axis2, RMI, more can be added</LI>
+ <LI>plug-points for adding component implementations such as Java Script, Spring, JRuby, Python (started), more can be added</LI>
+</UL>
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-Modules"></A><FONT color="#0099cc">Module Structure</FONT></H3>
+<P>[Note: Do we want to link to <SPAN class="nobr"><A href="kernel-modulization-design-discussions.html" title="Visit page outside Confluence" rel="nofollow">Kernel-Structure<SUP><IMG class="rendericon" src="http://cwiki.apache.org/confluence/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"></SUP></A></SPAN>]?</P>
+
+<P>As illustrated below, the Tuscany runtime consists of the following key modules/packages:</P>
+
+<OL>
+ <LI>SCA Spec API: The APIs defined by the SCA Java Client and Implementation Spec</LI>
+ <LI>API: Tuscany APIs which extend the SCA spec APIs</LI>
+ <LI>Core: The runtime implementation</LI>
+ <LI>SPI: SPI and base classes to extend the Tuscany runtime. It defines all the contract that Core interacts with Container/Binding/Databinding extensions.</LI>
+ <LI>Extensions:
+ <OL>
+ <LI>Container</LI>
+ <LI>Binding</LI>
+ <LI>Databinding</LI>
+ </OL>
+ </LI>
+ <LI>Host API: The interface between hosting environments and the Tuscany runtime</LI>
+ <LI>Host Platforms: The environments that host the Tuscany runtime</LI>
+</OL>
+
+
+<P><IMG src="tuscany-architecture-guide.data/tuscany_layers.jpg" align="absmiddle" border="0"></P>
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-Artifacts"></A><FONT color="#0099cc">Runtime Artifacts</FONT></H3>
+<UL>
+ <LI>Component
+ <UL>
+ <LI>Basic unit of executable code</LI>
+ <LI>Offer services and have references</LI>
+ </UL>
+ </LI>
+ <LI>Service
+ <UL>
+ <LI>A contract for component clients consisting of 0..n operations</LI>
+ <LI>Services may be local or remote</LI>
+ </UL>
+ </LI>
+ <LI>Reference
+ <UL>
+ <LI>A dependency on a service</LI>
+ <LI>Component references are wired to services by the runtime</LI>
+ </UL>
+ </LI>
+</UL>
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-Recursions"></A><FONT color="#0099cc">Recursive Composite</FONT></H3>
+<P>Components may be Atomic or Composite</P>
+<UL>
+ <LI>Composite components contain 0..n components<BR>
+Composite services are exposed over 1..n bindings (e.g. SOAP/HTTP, JMS, RMI) <BR>
+Composite references have 1..n bindings and may target</LI>
+ <LI>A service exposed by another composite</LI>
+ <LI>A service outside the SCA system, e.g. &quot;Google search&quot;<BR>
+A composite may contain just a service wired to a references (mediation) <SPAN class="error">&#91;Haleh: Clarify&#93;</SPAN></LI>
+</UL>
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-KernelWiring"></A><FONT color="#0099cc">Wiring</FONT></H3>
+<P>To understand how wiring works, we need to detail how Components function in the system. Let's start with Atomic Components and then discuss Composite Components.</P>
+
+
+<H4><A name="TuscanyArchitectureGuide-AtomicComponent"></A>Atomic Component </H4>
+<P>AtomicComponent is the most basic component form. It corresponds to the spec concept which offers services, has references and properties </P>
+<UL>
+ <LI>Implementation types e.g. Java, XSLT, etc.</LI>
+ <LI>Are wired</LI>
+ <LI>Have properties</LI>
+</UL>
+
+
+<P>Atomic Components have implementation instances. Instances are associated with a scope: e.g. request, conversation, composite. A SCDL entry is used to define a Component. <SPAN class="error">&#91;Haleh: Define scope&#93;</SPAN></P>
+
+<P>Atomic components use a ScopeContainer to manage implementation instances:</P>
+<UL>
+ <LI>Composite, HTTP Session, Request, Stateless</LI>
+ <LI>ScopeContainers track implementation instances by scope id and the AtomicComponent instance identity</LI>
+ <LI>Instances are stored in an InstanceWrapper which is specific to the component implementation type (e.g. PojoInstanceWrapper.java)</LI>
+</UL>
+
+
+<H4><A name="TuscanyArchitectureGuide-ComponentWiring"></A>Component Wiring </H4>
+<P>Component references are connected to services through wires</P>
+<UL>
+ <LI>Two sides
+ <UL>
+ <LI>InboundWire - handles the source side of a wire, including policy</LI>
+ <LI>OutboundWire - handles the target side of a wire, including policy</LI>
+ </UL>
+ </LI>
+ <LI>The runtime connects inbound and outbound wires, performing optimizations if possible
+ <UL>
+ <LI>Inbound and outbound wires may be associated with different service contracts</LI>
+ <LI>Different implementation types</LI>
+ <LI>&quot;Standard&quot; wires contain invocation chains that have Interceptors that perform some form of mediation (e.g. policy)</LI>
+ <LI>Other wire types exist that, for example, do not perform mediations</LI>
+ </UL>
+ </LI>
+</UL>
+
+
+<H4><A name="TuscanyArchitectureGuide-InvocationChains"></A>Invocation Chains </H4>
+<P>A wire has an InvocationChain per service operation. An InvocationChain may have interceptors - &quot;around-style&quot; mediation. Component implementation instances access a wire through a WireInvocationHandler associated with a reference.</P>
+<UL>
+ <LI>WireInvocationHandlers may (or may not depending on the component type) be fronted by a proxy</LI>
+ <LI>WireInvocationHandlers dispatch an invocation to the correct chain<BR>
+A wire has a TargetInvoker that is created from the target side AtomicComponent or Reference and is stored on the source wire invocation handler. The TargetInvoker is resposnible for dispatching the request to the target instance when the message hits the end of the target invocation chain. </LI>
+</UL>
+
+
+<H4><A name="TuscanyArchitectureGuide-InvocationOverview"></A>Invocation Overview </H4>
+<UL>
+ <LI>An invocation is dispatched to the WireInvocationHandler</LI>
+ <LI>The WireInvocationHandler looks up the correct InvocationChain</LI>
+ <LI>It then creates a message, sets the payload, sets the TargetInvoker, and passes the message down the chain</LI>
+ <LI>When the message reaches the end of the chain, the TargetInvoker is called, which in turn is responsible for dispatching to the target</LI>
+ <LI>Having the TargetInvoker stored on the outbound side allows it to cache the target instance when the wire source has a scope of equal or lesser value than the target (e.g. request--&gt;composite</LI>
+</UL>
+
+
+<P>The runtime provides components with InboundWires and OutboundWires. InvocationChains are held in component wires and are therefore stateless which allows for dynamic behavior such as introduction of new interceptors or re-wiring.</P>
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-KernelBootstrap"></A><FONT color="#0099cc">Bootsrap </FONT></H3>
+
+<P>Bootstrap process is controlled by Host environment. The default process is implemented in DefaultBootstrapper.</P>
+
+<P><IMG src="tuscany-architecture-guide.data/bootstrap.jpg" align="absmiddle" border="0"></P>
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-KernelCompositeHierarchy"></A><FONT color="#0099cc">Composite Hierarchy</FONT></H3>
+<P><A href="tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg" target="tuscany_composite_hierarchy.jpg" onclick="window.open(&quot;http://cwiki.apache.org/confluence/download/attachments/45023/tuscany_composite_hierarchy.jpg&quot;, &quot;tuscany_composite_hierarchy.jpg&quot;, &quot;height=610,width=1057,menubar=no,status=no,toolbar=no&quot;); return false;"><IMG src="tuscany-architecture-guide.data/tuscany_composite_hierarchy.jpg.jpeg" title="Added by UWC, the Universal Wiki Converter" align="absmiddle" border="0"></A></P>
+
+<H3><A name="TuscanyArchitectureGuide-Thesequencediagramforthebootstrapping"></A>The sequence diagram for the bootstrapping </H3>
+
+<P><A href="tuscany-architecture-guide.data/bootstrap_seq.jpg" target="bootstrap_seq.jpg" onclick="window.open(&quot;http://cwiki.apache.org/confluence/download/attachments/45023/bootstrap_seq.jpg&quot;, &quot;bootstrap_seq.jpg&quot;, &quot;height=993,width=1809,menubar=no,status=no,toolbar=no&quot;); return false;"><IMG src="tuscany-architecture-guide.data/bootstrap_seq.jpg.jpeg" title="Added by UWC, the Universal Wiki Converter" align="absmiddle" border="0"></A></P>
+
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-JavaSCADeployment"></A><FONT color="#0099cc">Deployment</FONT></H3>
+
+<P>The runtime processes service assemblies serialized using SCA XML vocabulary, SCDL, but can take other forms. </P>
+<UL>
+ <LI>The load phase processes SCDL and creates an in-memory model</LI>
+ <LI>The build phase evaluates the model and produces corresponding runtime artifacts (e.g. components, services, references)</LI>
+ <LI>The connect phase wires references to services</LI>
+</UL>
+
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-JavaSCALoaders"></A><FONT color="#0099cc">Loader</FONT></H3>
+<P>SCA service assemblies are deployed to the SCA domain in the format of SCDL files. Tuscany runtime uses loader to load the SCDLs into model objects which are a set of java beans to hold the metadata.</P>
+
+<P>There are two types of loaders:</P>
+
+<UL>
+ <LI>StAXElementLoader: Load the XML element from the StAX events</LI>
+ <LI>ComponentTypeLoader: Load the Component Type for an implementation either by introspection or paring a side file</LI>
+</UL>
+
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-JavaSCAmodel"></A><FONT color="#0099cc">Model</FONT></H3>
+
+<P><A href="tuscany-architecture-guide.data/model.jpg" target="model.jpg" onclick="window.open(&quot;http://cwiki.apache.org/confluence/download/attachments/45023/model.jpg&quot;, &quot;model.jpg&quot;, &quot;height=649,width=852,menubar=no,status=no,toolbar=no&quot;); return false;"><IMG src="tuscany-architecture-guide.data/model.jpg.jpeg" title="Added by UWC, the Universal Wiki Converter" align="absmiddle" border="0"></A></P>
+
+<H3><A name="TuscanyArchitectureGuide-LoadingComponentType"></A>Loading Component Type </H3>
+<P>Loads the component type definition for a specific implementation</P>
+<UL>
+ <LI>How it does this is implementation-specific</LI>
+ <LI>May load XML sidefile (location set by implementation)</LI>
+ <LI>May introspect an implementation artifact (e.g. Java annotations)</LI>
+ <LI>... or anything else</LI>
+</UL>
+
+
+<P>Composite ComponentType Loader</P>
+<UL>
+ <LI>Load SCDL from supplied URL</LI>
+ <LI>Extract and load SCDL from composite package</LI>
+</UL>
+
+
+<P>POJO ComponentType Loader</P>
+<UL>
+ <LI>Introspect Java annotations</LI>
+ <LI>Uses a pluggable &quot;annotation processing&quot; framework to introspect Java classes</LI>
+</UL>
+
+
+
+<H3><A name="TuscanyArchitectureGuide-"></A><A name="TuscanyArchitectureGuide-JavaSCABuilder"></A><FONT color="#0099cc">Builder</FONT></H3>
+<P>Java SCA builder creates a runtime component from the configuration model</P>
+<UL>
+ <LI>Builder for each implementation type</LI>
+ <LI>Builder for each binding type (service or reference component)</LI>
+</UL>
+
+
+<P>Runtime component manages:</P>
+<UL>
+ <LI>Implementation instances</LI>
+ <LI>Inbound and Outbound wires</LI>
+</UL>
+
+
+<P>Every implementation is likely to be different</P>
+<UL>
+ <LI>Different artifacts, programming model, ...</LI>
+</UL>
+
+
+<P>Composite implementation recurses for contained components</P>
+<UL>
+ <LI>Re-invokes the Builder for every child</LI>
+</UL>
+
+
+<H3><A name="TuscanyArchitectureGuide-Classdiagramfortheruntimeartifacts"></A>Class diagram for the runtime artifacts </H3>
+
+<P><A href="tuscany-architecture-guide.data/component.jpg" target="component.jpg" onclick="window.open(&quot;http://cwiki.apache.org/confluence/download/attachments/45023/component.jpg&quot;, &quot;component.jpg&quot;, &quot;height=754,width=1047,menubar=no,status=no,toolbar=no&quot;); return false;"><IMG src="tuscany-architecture-guide.data/component.jpg.jpeg" title="Added by UWC, the Universal Wiki Converter" align="absmiddle" border="0"></A></P>
+
+
+<H3><A name="TuscanyArchitectureGuide-Connecting"></A>Connecting </H3>
+
+<P>The connector is reponsible to connect the wires for the components, services and references.</P>
+
+<H2><A name="TuscanyArchitectureGuide-FederatedAssembly"></A>Federated Assembly</H2>
+<P>&lt;notes from Meeraj's email on 2/1/07 - Haleh included here&gt;<BR>
+I have been working on the stuff around federated assembly and enabling<BR>
+distributed SCA domains. Here is a quick summary of what has been done<BR>
+so far,</P>
+
+<P>Work in progress</P>
+
+<H3><A name="TuscanyArchitectureGuide-DiscoveryService"></A>Discovery Service</H3>
+
+<UL>
+ <LI>Provides the low-level communication abstraction for<BR>
+enabling runtimes participating in the domain to exchange information</LI>
+ <LI>The abstraction supports directed message delivery to a<BR>
+given runtime, asynchronous message reception and broadcast to all<BR>
+runtimes participating in the domain</LI>
+ <LI>To start with we are following a model, where one<BR>
+runtime in the domain assumes the master role and is responsible for<BR>
+managing the logical assembly</LI>
+ <LI>This runtime creates the physical artifacts and<BR>
+trensport them to the target slave runtimes</LI>
+ <LI>The discovery abstraction is defined in SPI</LI>
+ <LI>There are two implementations in runtime/services - JXTA<BR>
+and Bonjour</LI>
+ <LI>JXTA implementaion is getting pretty much there, it<BR>
+mainly uses the JXTA Peer Discovery protocol (PDP) and Peer Resolver<BR>
+Protocol (PRP)</LI>
+</UL>
+
+
+<H3><A name="TuscanyArchitectureGuide-MarshallingFramework"></A>Marshalling Framework</H3>
+
+<UL>
+ <LI>This is similar to our loader framework, however<BR>
+supports bi-directional marshalling and unmarshalling of physical model<BR>
+objects</LI>
+ <LI>This framework is used by the assembly service to<BR>
+serialize and transport physical model information to slave runtimes<BR>
+using the discovery services</LI>
+ <LI>On the receiving end the serialized information is<BR>
+unmarshalled by the federated deployer for being applied to the slave<BR>
+runtime</LI>
+ <LI>The abstraction is defined in SPI</LI>
+ <LI>I am working on an implementation in core</LI>
+ <LI>The framework supports versioning of physicla model<BR>
+objects if the participating runtimes are at different versions</LI>
+</UL>
+
+
+<H3><A name="TuscanyArchitectureGuide-FederatedDeployer"></A>Federated Deployer</H3>
+
+<UL>
+ <LI>This is similar to the local deployer, however registers<BR>
+itself with the discovery service for receiving physical model updates</LI>
+ <LI>The federated deployer doesn't use the loader framework</LI>
+ <LI>The federated deployer accepts serialized physical model<BR>
+information in XML, rather than raw SCDL as with local deployer</LI>
+ <LI>It uses the current builder framework to build, prepare<BR>
+and start the components</LI>
+</UL>
+
+
+<TABLE cellpadding="5" width="85%" cellspacing="8px" class="noteMacro" border="0" align="center"><COLGROUP><COL width="24"><COL></COLGROUP><TR><TD valign="top"><IMG src="http://cwiki.apache.org/confluence/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></TD><TD><B class="strong">A note from Jeremy on federated deployment Feb. 9, 2007.</B><BR>
+<P>The design is that there is a &quot;master&quot; node that is working out which&quot;physical&quot; nodes components are going to run on. It then <BR>
+passes PhysicalComponentDefinition's to the worker nodes to get them tocreate the component and any transport bindings it needs <BR>
+to talk toother nodes. The PCDs are portable, independent of the type ofruntime, instead tied to the type of component.Picking on <BR>
+Ruby as an example as we know we can run that on Java andNative runtimes, there could be one common PCD for a Ruby componentthat <BR>
+was supported by all container implementations. The master couldsend that to any node to have it run a Ruby component. A runtimecould <BR>
+also offer &quot;enhanced&quot; Ruby support with additional featuresthat required additional configuration. If would offer support for adifferent <BR>
+PCD with that additional metadata. Which one is selected bythe master would be part of its component allocation algorithm.So basically, <BR>
+any runtime that can connect to the federated fabricand handle a PCD can join the SCA domain. We picked JXTA and XML forthe fabric and <BR>
+PCD encoding as there is support for those in bothJava and C++. Adding support for that to the Native runtime wouldalso be good if you <BR>
+were skeptical of all the Java stuff.</P></TD></TR></TABLE>
+
+<H3><A name="TuscanyArchitectureGuide-Workoutstanding"></A>Work outstanding</H3>
+
+<UL>
+ <LI>Define the physical model in Java</LI>
+ <LI>Define the corresponding XML infoset</LI>
+</UL>
+
+
+
+
+<H3><A name="TuscanyArchitectureGuide-SupportedExtensions"></A>Supported Extensions </H3>
+<H4><A name="TuscanyArchitectureGuide-Spring"></A>Spring</H4>
+<P>1) it allows a Spring application context to act as the<BR>
+implementation of an SCA component - this allows users to bring<BR>
+existing Spring applications into an SCA assembly<BR>
+2) it allows SCA components to act as Spring beans so that users can<BR>
+use services over SCA from their applications.</P>
+ </DIV>
+
+
+ </DIV>
+ </DIV>
+ <DIV class="footer">
+ Generated by
+ <A href="http://www.atlassian.com/confluence/">Atlassian Confluence</A> (Version: 2.2.9 Build: 527 Sep 07, 2006)
+ <A href="http://could.it/autoexport/">AutoExport Plugin</A> (Version: Unknown - PluginManager Error)
+ </DIV>
+ </BODY>
+</HTML> \ No newline at end of file