summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/architecture-guide.html
blob: ba9ca7e970f2b07b1fbebddfd971e23117822fa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!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="http://incubator.apache.org/tuscany/stylesheets/default.css">
        <LINK rel="SHORTCUT ICON" href="http://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">   
        <TITLE>Architecture Guide : Apache Tuscany</TITLE>
    <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
    
    <BODY onload="init()">
        
            <TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://incubator.apache.org/tuscany/images/TuscanyLogoNEW_Text_120px_bg.jpg">
        <TR>
            <TD valing="top" align="left">
			    <A href="http://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://incubator.apache.org/tuscany/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
			</TD>
			<TD>
                <A href="http://incubator.apache.org/tuscany/"><IMG src="http://incubator.apache.org/tuscany/images/TuscanyLogo.jpg" border="0"></A>
            </TD>
            
            <TD width="100%">
                &nbsp;
            </TD>
            <TD align="right">
                <IMG src="http://incubator.apache.org/tuscany/images/apache-incubator-logo.png" border="0">
            </TD>

            <!-- Adds the edit page link to the top banner-->
            <TD valign="bottom">
                <DIV style="padding: 2px 10px; margin: 0px;">
                    <A href="http://cwiki.apache.org/confluence/pages/editpage.action?pageId=51125">
                    <IMG src="http://incubator.apache.org/tuscany/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
                </DIV>
            </TD>

        </TR>
    </TABLE>

            <TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
        <TR class="topBar">
            <TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%">
                &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-overview.html" title="SCA Overview">SCA Overview</A>&nbsp;&gt;&nbsp;<A href="sca-native.html" title="SCA Native">SCA Native</A>&nbsp;&gt;&nbsp;<A href="sca-native-documentation-menu.html" title="SCA Native Documentation Menu">SCA Native Documentation Menu</A>&nbsp;&gt;&nbsp;<A href="" title="Architecture Guide">Architecture Guide</A>
            </TD>
            
            <TD align="left" valign="middle" class="topBarDiv" nowrap="true">
            <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/ws-tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>&nbsp;&nbsp;
            </TD>
        </TR>
    </TABLE>

        <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
            <TR>
                <TD align="left" valign="top">
                        <DIV id="PageContent">
                
        <DIV class="pagecontent">
            <DIV class="wiki-content">
                <TABLE class="sectionMacro" border="0" cellpadding="5" cellspacing="0" width="100%"><TBODY><TR><TD class="confluenceTd" valign="top" width="15%">
<DIV class="panel" style="border-style: solid; border-color: #C3CDA1; "><DIV class="panelHeader" style="border-bottom-style: solid; border-bottom-color: #C3CDA1; background-color: #C3CDA1; "><B>General</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1; ">
<P><A href="home.html" title="Home">Home</A><BR>
<SPAN class="nobr"><A href="http://www.apache.org/licenses/LICENSE-2.0.html" title="Visit page outside Confluence" rel="nofollow">License <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><BR>
<A href="sca-native-get-involved.html" title="SCA Native Get Involved">Get Involved</A><BR>
<A href="sca-native-found-a-bug.html" title="SCA Native Found a Bug">Found a Bug?</A></P>
</DIV></DIV>

<DIV class="panel" style="border-style: solid; border-color: #b4b4b5; "><DIV class="panelHeader" style="border-bottom-style: solid; border-bottom-color: #b4b4b5; background-color: #C3CDA1; "><B>SCA Native</B></DIV><DIV class="panelContent" style="background-color: #ECF4D1; ">
<P><A href="sca-native.html" title="SCA Native">SCA Native Home</A><BR>
<A href="sca-native-faq.html" title="SCA Native FAQ">FAQ</A><BR>
<A href="sca-native-releases.html" title="SCA Native Releases">Downloads</A><BR>
<A href="sca-native-documentation-menu.html" title="SCA Native Documentation Menu">Documentation</A><BR>
<SPAN class="nobr"><A href="https://svn.apache.org/repos/asf/incubator/tuscany/cpp/sca" title="Visit page outside Confluence" rel="nofollow">Source Code<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>
</DIV></DIV></TD><TD class="confluenceTd" valign="top" width="85%">

<H1><A name="ArchitectureGuide-HighlevelarchitectureviewofSCANative"></A>High level architecture view of SCA Native</H1>

<P>Tuscany SCA Native consists of the <SPAN class="nobr"><A href="http://svn.apache.org/repos/asf/incubator/tuscany/cpp/sca/runtime/core/" title="Visit page outside Confluence" rel="nofollow">kernel<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> and <SPAN class="nobr"><A href="http://svn.apache.org/repos/asf/incubator/tuscany/cpp/sca/runtime/extensions/" title="Visit page outside Confluence" rel="nofollow">extensions<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>The kernel loads any .composite, .xsd, .wsdl or<BR>
.componentType files found under a directory defined by the<BR>
TUSCANY_SCACPP_ROOT environment variable. The kernel also loads any<BR>
extensions found in the Tuscany extensions directory (found in the<BR>
directory specified by the TUSCANY_SCACPP env variable). The kernel<BR>
inspects the .composite files and checks that any required extensions<BR>
that the SCA app uses are loaded, works out how the components are<BR>
wired together, and then passes the details of the composite to the<BR>
appropriate extensions. E.g. if the SCDL contains a<BR>
&lt;implementation.python&gt; element, the contents of that element are<BR>
passed to the Python extension which will load a defined script, etc.<BR>
When the SCA app is invoked (via a local client call or a SOAP or REST<BR>
service binding being called) the kernel uses the appropriate<BR>
extension to invoke the right methods in the component implementation<BR>
code.</P>

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

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

                <SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </SCRIPT>
    <SCRIPT type="text/javascript">
       _uacct = "UA-1174707-5";
       urchinTracker();
    </SCRIPT>

    <DIV class="footer">
        Copyright &copy; 2003-2007, The Apache Software Foundation&nbsp;&nbsp;
    </DIV>

    </BODY>
</HTML>