summaryrefslogtreecommitdiffstats
path: root/site/trunk/site-publish/sca-native-architecture-guide.html
blob: 0d3e93f1bdbad14c5936092eb723f49564efc8fb (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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE- 2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
    <HEAD>
		<!-- generateKeywords macro -->
	    <META name="description" content="Apache Tuscany">
        <META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture,  sca, service component architecture, das, sdo, csa, ruby, opensource">
		<!-- generateKeywords macro end -->
		
        <LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css">
        <LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">   
        <TITLE>Apache Tuscany : SCA Native Architecture Guide</TITLE>
    <META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
    
    <BODY onload="init()">
        <!-- topNav macro -->
		<TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg">
			<TR>
				<TD valing="top" align="left">
					<A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
				</TD>
				<TD>
					<A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A>
				</TD>
				
				<TD width="100%">
					&nbsp;
				</TD>

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

			</TR>
		</TABLE>
        <!-- topNav macro end -->

		<!-- breadCrumbs macro -->
		<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="SCA Native Architecture Guide">SCA Native Architecture Guide</A>
				</TD>
				
				<TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true">
				<A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>&nbsp;&nbsp;
				</TD>
			</TR>
		</TABLE>
		<!-- breadCrumbs macro end -->


        <TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
            <TR>
                <TD align="left" valign="top">

					<!-- pageContent macro -->
					<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%"><P></P>
<DIV class="panel" style="background-color: #ECF4D1;border-color: #C3CDA1;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;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>
<A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License </A><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="background-color: #ECF4D1;border-color: #b4b4b5;border-style: solid;border-width: 1px;"><DIV class="panelHeader" style="border-bottom-width: 1px;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-releases.html" title="SCA Native Releases">Downloads</A><BR>
<A href="sca-native-documentation-menu.html" title="SCA Native Documentation Menu">Documentation</A><BR>
<A href="https://svn.apache.org/repos/asf/tuscany/sca-cpp/" class="external-link" rel="nofollow">Source Code</A></P>
</DIV></DIV></TD><TD class="confluenceTd" valign="top" width="85%">

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

<P>Tuscany SCA Native consists of the <A href="http://svn.apache.org/repos/asf/incubator/tuscany/cpp/sca/runtime/core/" class="external-link" rel="nofollow">kernel</A> and <A href="http://svn.apache.org/repos/asf/incubator/tuscany/cpp/sca/runtime/extensions/" class="external-link" rel="nofollow">extensions</A>.</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>	
		            <!-- pageContent macro end -->
					
                </TD>
            </TR>
        </TABLE>

		<!-- footer macro -->
				<SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
		</SCRIPT>
		<SCRIPT type="text/javascript">
		   _uacct = "UA-1174707-5";
		   urchinTracker();
		</SCRIPT>
		
				<A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A>    

		<DIV class="footer">
			Copyright � 2003-2012, The Apache Software Foundation&nbsp;&nbsp;</BR>
                        Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation.
		</DIV>
		<!-- footer macro end -->

    </BODY>
</HTML>