diff options
Diffstat (limited to 'modules/CIAO/docs/static_dance.html')
-rw-r--r-- | modules/CIAO/docs/static_dance.html | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/modules/CIAO/docs/static_dance.html b/modules/CIAO/docs/static_dance.html new file mode 100644 index 00000000000..3bd6433e133 --- /dev/null +++ b/modules/CIAO/docs/static_dance.html @@ -0,0 +1,214 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> + <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> + <title></title> +<!-- $Id$ --> + <meta name="GENERATOR" content="OpenOffice.org 1.1.2 (Linux)"> + <meta name="CREATED" content="20041128;11452700"> + <meta name="CHANGED" content="20041210;11524200"> + <style> + <!-- + @page { size: 8.5in 11in; margin-left: 1.25in; margin-right: 1.25in; margin-top: 1in; margin-bottom: 1in } + P { margin-bottom: 0.08in } + H2.western { font-family: "Times New Roman", serif } + H2.cjk { font-family: "Arial Unicode MS" } + H2.ctl { font-family: "Tahoma" } + H3.western { font-family: "Times New Roman", serif } + H3.cjk { font-family: "Arial Unicode MS" } + H3.ctl { font-family: "Tahoma" } + --> + </style> +</head> +<body dir="ltr" lang="en-US"> +<h2 class="western" align="center">CIAO Static Configuration Support +with DanCE for Real-Time Platforms </h2> +<h3 class="western">1. Introduction</h3> +<p>The dynamic packaging, assembly, and deployment mechanisms +currently available in CIAO are useful for application domains where +component metadata is less likely to be known a priori, where +implementation upgrades may need to be performed on-line, and where +platform features like loading and unloading dynamic libraries are +both available and useful. We have already incorporated <a + href="http://www.cs.wustl.edu/%7Eschmidt/ACE_wrappers/TAO/CIAO/docs/static_ciao_index.html">static +configuration support</a> for component configuration in CIAO on +platforms like VxWorks, as a set of optional strategies and +optimizations to the existing CIAO configuration capabilities (). In +this white paper, we discuss implementation details for extending the +static configuration capabilities as part of the new DanCE (D&C +support available with CIAO) framework.</p> +<p>The fundamental intuition in understanding our approach is that in +DRE systems the stages of the overall system lifecycle are similar to +those in more dynamic conventional component-oriented client-server +applications.However, in DRE systems several phases of the system +lifecycle are compressed into the compile-time and +system-initialization phases, so that (1) for testing and +verification purposes the set of components in an application can be +identified and analyzed before run-time, and (2) overheads for +run-time operation following initialization are reduced and made more +predictable. Furthermore, due to the nuances of the platforms +traditionally used for deploying DRE systems, not all features of +conventional platforms are available. Our approach therefore avoids +certain mechanisms that are either unavailable or too costly in terms +of performance. We follow these intuitions in our approach, taking +the existing configuration phases in CIAO and pushing several of them +earlier in the configuration lifecycle.</p> +<h3 class="western">2. Current D&C in CIAO with DanCE</h3> +<p><img src="imgs/dance_arch.jpg" name="Graphic2" + style="border: 0px solid ; width: 600px; height: 400px;" alt="" + align="left"><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br><b>Figure 1.</b> <b>Current D&C process using DAnCE</b></p> +One of the key concerns while supporting the static configuration +within the DAnCE framework is to reuse the existing components in the +DAnCE framework as much as possible. Figure 1 shows the current D&C +process using the DAnCE framework. This is the standard D&C +process as specified in the CCM D&C specification.As seen from +the figure, there are multiple processes (Executor, ExecutionManager, +NodeManagers and NodeApplications) that are involved. +<h3 class="western">3. Static Configuration with DanCE</h3> +<p><img src="imgs/static_dance_arch.jpg" name="Graphic3" + style="border: 0px solid ; width: 800px; height: 800px;" alt="" + align="left"><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br> +</p> +<p><br><b>Figure 2.</b> <b>Static D&C in DAnCE</b></p> +<p>Figure 2 shows the static configuration approach in DAnCE. Here, +the flattened deployment plan (.cdp) is parsed offline by an offline +parser ($CIAO_ROOT/StaticConfigurator/StaticDAnCEParser) using the +same XML parser classes that the dynamic configuration uses. The +output of the parser is a C++ plan.h file, which contains the function +entry points for home and home servant creation. The assumption here +is that all the necessary (component implementations and other) +libraries are statically linked to the driver application (see a +template in +$CIAO_ROOT/DAnCE/StaticConfigurator/StaticDAnCEApp.cpp.tmpl). </p> +<p>The driver application is essentially a NodeManager which can be +used to do deployment just the same as in DAnCE. To achieve maximum +reusability of the existing classes in the DAnCE framework, we use +the class hierarchy shown in Figure 3. </p> +<br> +<b></b> +<p style="page-break-before: always;" align="left"><img + src="imgs/static_dance_impl.jpg" name="Graphic1" + style="border: 0px solid ; width: 700px; height: 700px;" alt="" + align="left"><br clear="left"> +<b>Figure 3. New class hierarchy to accommodate static configuration +within DAnCE<br> +</b></p> +<h3 class="western">3.Example</h3> +<p>To run the static version of Hello example, do the following,<br> +</p> +<ol> + <li>Build ACE+TAO+CIAO statically</li> + <li>Build $CIAO_ROOT/examples/Hello </li> + <li>Generate the static function entrypoints (plan.h)<br> + <span style="font-family: monospace;">> cd +$CIAO_ROOT/examples/Hello/descriptors</span><span + style="font-family: monospace;"><br> +> <span style="font-family: "times new roman",serif;"><span + style="font-weight: bold;"></span></span>$CIAO_ROOT/DAnCE/StaticConfigurator/StaticDAnCEParser +-p flattened_deploymentplan_without_ns.cdp</span><br> + <span style="font-family: monospace;">> cp plan.h <span + style="font-weight: bold;"></span>$CIAO_ROOT/DAnCE/StaticConfigurator/</span><br> + </li> + <li>Build the static NodeManager for Hello example<span + style="font-family: monospace;"><br> +> cd $CIAO_ROOT/DAnCE/StaticConfigurator</span><br + style="font-family: monospace;"> + <span style="font-family: monospace;"></span><span + style="font-family: monospace;">> cp StaticDAnCEApp.cpp.tmpl +StaticDAnCEApp.cpp</span><br style="font-family: monospace;"> + <span style="font-family: monospace;">> cp +StaticDAnCEApp.mpc.tmpl StaticDAnCEApp.mpc<br> +> $ACE_ROOT/bin/mwc.pl<br> +> make<br> + </span></li> + <li>Run the static node managers. Note that the <span + style="font-family: monospace;">ORBEndpoint</span> values should +correspond to the ones in <span style="font-family: monospace;"> +$CIAO_ROOT/examples/Hello/descriptors/TestNodeManagerMap.dat </span><br> +> <span style="font-family: monospace;">cd +$CIAO_ROOT/DAnCE/StaticConfigurator<br> +> ./StaticDAnCEApp -ORBEndpoint iiop://localhost:60001 &<br> + </span><span style="font-family: monospace;">> ./StaticDAnCEApp +-ORBEndpoint iiop://localhost:60002 &</span><br> + </li> + <li>Do the deployment. This is just the same as the non-static +version of DAnCE except that we have the NodeManagers already running +and need not spawn node managers. To accomplish this, change <span + style="font-family: monospace;">$CIAO_ROOT/examples/Hello/descriptors/run_test_without_ns.pl +to <span style="font-weight: bold;">*not*</span> run the node manager +daemons.<br> + </span><span style="font-family: monospace;">> cd +$CIAO_ROOT/examples/Hello/descriptors<br> +> ./</span><span style="font-family: monospace;">run_test_without_ns.pl</span></li> +</ol> +<br> +<p></p> +</body> +</html> |