You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ro...@apache.org on 2004/09/06 06:18:43 UTC

cvs commit: ws-axis/c/docs/Arch ArchitectureGuide.pdf ArchitectureGuide.html

roshan      2004/09/05 21:18:43

  Added:       c/docs/Arch ArchitectureGuide.pdf ArchitectureGuide.html
  Log:
  Added a folder called Arch inside the Docs folder.Arch folder contains ArchitectureGuide.html & the PDF.Added by Rangika
  
  Revision  Changes    Path
  1.1                  ws-axis/c/docs/Arch/ArchitectureGuide.pdf
  
  	<<Binary file>>
  
  
  1.1                  ws-axis/c/docs/Arch/ArchitectureGuide.html
  
  Index: ArchitectureGuide.html
  ===================================================================
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
  <head>
  <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <!--*** This is a generated file.  Do not edit.  ***-->
  <link rel="stylesheet" href="../../skin/tigris.css" type="text/css">
  <link rel="stylesheet" href="../../skin/mysite.css" type="text/css">
  <link rel="stylesheet" href="../../skin/site.css" type="text/css">
  <link media="print" rel="stylesheet" href="../../skin/print.css" type="text/css">
  <title>Architecture Guide</title>
  </head>
  <body bgcolor="white" class="composite">
  <!--================= start Banner ==================-->
  <div id="banner">
  <table width="100%" cellpadding="8" cellspacing="0" summary="banner" border="0">
  <tbody>
  <tr>
  <!--================= start Group Logo ==================-->
  <td align="left">
  <div class="groupLogo">
  <a href="http://ws.apache.org/"><img border="0" class="logoImage" alt="The Apache WebServices Project" src="../../images/project-logo.jpg"></a>
  </div>
  </td>
  <!--================= end Group Logo ==================-->
  <!--================= start Project Logo ==================--><td align="right">
  <div class="projectLogo">
  <a href="http://ws.apache.org/axis/"><img border="0" class="logoImage" alt="The Apache Axis Project" src="../../images/axis.jpg"></a>
  </div>
  </td>
  <!--================= end Project Logo ==================-->
  <!--================= start Search ==================--><td valign="top" rowspan="2" align="right" class="search">
  <form target="_blank" action="http://www.google.com/search" method="get">
  <table summary="search" border="0" cellspacing="0" cellpadding="0">
  <tr>
  <td bgcolor="#a5b6c6" colspan="3"><img height="10" width="1" alt="" src="../../skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td colspan="3"><img height="8" width="1" alt="" src="../../skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td><img height="1" width="1" alt="" src="../../skin/images/spacer.gif" class="spacer"></td><td nowrap="nowrap"><input value="ws.apache.org" name="sitesearch" type="hidden"><input size="10" name="q" id="query" type="text"><img height="1" width="5" alt="" src="../../skin/images/spacer.gif" class="spacer"><input name="Search" value="GO" type="submit">
  <br>
                            Search WS</td><td><img height="1" width="1" alt="" src="../../skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td colspan="3"><img height="7" width="1" alt="" src="../../skin/images/spacer.gif" class="spacer"></td>
  </tr>
  <tr>
  <td class="bottom-left-thick"></td><td bgcolor="#a5b6c6"><img height="1" width="1" alt="" src="../../skin/images/spacer.gif" class="spacer"></td><td class="bottom-right-thick"></td>
  </tr>
  </table>
  </form>
  </td>
  <!--================= end Search ==================-->
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Banner ==================-->
  <!--================= start Main ==================-->
  <table width="100%" cellpadding="0" cellspacing="0" border="0" summary="nav" id="breadcrumbs">
  <tbody>
  <!--================= start Status ==================-->
  <tr class="status">
  <td>
  <!--================= start BreadCrumb ==================--><a href="http://www.apache.org/">Apache</a> | <a href="http://ws.apache.org/">WS</a><a href=""></a>
  <!--================= end BreadCrumb ==================--></td><td id="tabs">
  <!--================= start Tabs ==================-->
  <div class="tab">
  <span class="selectedTab"><a class="base-selected" href="../../index.html">WebServices-Axis</a></span>
  </div>
  <!--================= end Tabs ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  <!--================= end Status ==================-->
  <table id="main" width="100%" cellpadding="8" cellspacing="0" summary="" border="0">
  <tbody>
  <tr valign="top">
  <!--================= start Menu ==================-->
  <td id="leftcol">
  <div id="navcolumn">
  <div class="menuBar">
  <div class="menu">
  <span class="menuLabel">Axis</span>
   
  <div class="menuItem">
  <a href="../../index.html">Introduction</a>
  </div>
   
  <div class="menuItem">
  <a href="../../news.html">News</a>
  </div>
  
   
  <div class="menuItem">
  <a href="http://nagoya.apache.org/wiki/apachewiki.cgi?AxisProjectPages">FAQ/Wiki</a>
  </div>
   
  <div class="menu">
  <span class="menuLabel">Get Involved</span>
    
  <div class="menuItem">
  <a href="../../overview.html">Overview</a>
  </div>
    
  <div class="menuItem">
  <a href="../../cvs.html">CVS Repository</a>
  </div>
    
  <div class="menuItem">
  <a href="../../mail.html">Mailing Lists</a>
  </div>
    
  <div class="menuItem">
  <a href="../../ref.html">Reference Library</a>
  </div>
    
  <div class="menuItem">
  <a href="../../bugs.html">Bugs</a>
  </div>
   
  </div>
   
  <div class="menu">
  <span class="menuLabel">Axis (Java)</span>
    
  <div class="menuItem">
  <a href="../../java/index.html">Documentation</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/install.html">Installation</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/user-guide.html">User's Guide</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/developers-guide.html">Developer's Guide</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/integration-guide.html">Integration Guide</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/architecture-guide.html">Architecture Guide</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/reference.html">Reference Guide</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/reading.html">Reading Guide</a>
  </div>
    
  <div class="menuItem">
  <a href="../../java/requirements.html">Requirements</a>
  </div>
   
  </div>
   
  <div class="menu">
  <span class="menuLabel">Axis (C++)</span>
    
  <div class="menuItem">
  <a href="../../cpp/index.html">Latest Axis C++ Release!</a>
  </div>
    
  <div class="menuItem">
  <a href="../../cpp/documentation.html">Documentation</a>
  </div>
    
  <div class="menuItem">
  <a href="../../cpp/download.html">Download</a>
  </div>
    
  <div class="menuItem">
  <a href="http://nagoya.apache.org/wiki/apachewiki.cgi?AxisCPPProjectPages">Wiki Pages</a>
  </div>
    
  <div class="menuItem">
  <a href="../../cpp/who.html">Who we are</a>
  </div>
    
  </div>
  
  <div class="menu">
  <span class="menuLabel">Downloads</span>
    
  <div class="menuItem">
  <a href="../../releases.html">Releases</a>
  </div>
    
  <div class="menuItem">
  <a href="../../interim.html">Interim Drops</a>
  </div>
    
  <div class="menuItem">
  <a href="http://cvs.apache.org/viewcvs/ws-axis/">Source Code</a>
  </div>
  
  </div>
  
  <div class="menu">
  <span class="menuLabel">Translation</span>
    
  <div class="menuItem">
  <a href="http://ws.apache.org/~toshi/jp-site/axis/index.html">Japanese (Unofficial)</a>
  </div>
  
  </div>
  
  <div class="menu">
  <span class="menuLabel">Related Projects</span>
    
  <div class="menuItem">
  <a href="http://ws.apache.org/wsif/">WSIF</a>
  </div>
    
  <div class="menuItem">
  <a href="http://cvs.apache.org/viewcvs/*checkout*/ws-wsil/java/README.htm">WSIL</a>
  </div>
    
  <div class="menuItem">
  <a href="http://www-124.ibm.com/developerworks/projects/wsdl4j/">WSDL4J</a>
  </div>
    
  <div class="menuItem">
  <a href="http://www.uddi4j.org/">UDDI4J</a>
  </div>
  
  </div>
  
  <div class="menu">
  <span class="menuLabel">Misc</span>
    
  <div class="menuItem">
  <a href="../../site.html">Whole Site</a>
  </div>
    
  <div class="menuItem">
  <a href="../../who.html">Who We Are</a>
  </div>
    
  <div class="menuItem">
  <a href="../../contact.html">Contact</a>
  </div>
    
  <div class="menuItem">
  <a href="../../legal.html">Legal</a>
  </div>
  
    
  <div class="menuItem">
  <a href="../../docs.html">Notes/Docs</a>
  </div>
  
  </div>
  
  
  </div>
  </div>
  </div>
  </td>
  <!--================= end Menu ==================-->
  <!--================= start Content ==================--><td>
  <div id="bodycol">
  <div class="app">
  <div align="center">
  <h1>Architecture Guide</h1>
  </div>
  <div class="h3">
  <div class="h3">
  <h3>Architecture Guide</h3>
  </div>
  <div class="h4">
  <h4>Contents</h4>
  </div>
  <ul>
  <li>
  <a href="#intro">Introduction</a>
  </li>
  <li>
  <a href="#webapp">Architecture Overview</a>
  </li>
  <li>
  <a href="#depend">&nbsp;&nbsp;1.AxisEngine</a>
  </li>
  <li>
  <a href="#start">&nbsp;&nbsp;2.HandlerPool</a>
  </li>
  <li>
  <a href="#msoap">&nbsp;&nbsp;3.Message Model</a>
  </li>
  <li>
  <a href="#install-test">&nbsp;&nbsp;4.Soap Deserializer</a>
  </li>
  <li>
  <a href="#deploy">&nbsp;&nbsp;5.Soap Serializer</a>
  </li>
  <li>
  <a href="#test">&nbsp;&nbsp;6.WSDD Module</a>
  </li>
  <li>
  <a href="#massagef">Message Flow</a>
  </li>
  <li>
  <a href="#wrapper">WSDL2Ws Tool</a>
  </li>
  <li>
  <a href="#Dbook">Diagram Book</a>
  </li>
  <li>
  <a href="#open">Open Issues</a>
  </li>
  </ul>
  <p>
  <a name="intro"></a>
  </p>
  <div class="h4">
  <h4>Introduction</h4>
  </div>
  <p>This guide describes the architecture of Axis C++ implementation.</p>
  <br>
  <p>
  <a name="webapp"></a>
  </p>
  <div class="h4">
  <h4>Architecture Overview</h4>
  </div>
  <p>Axis C++ is all about deploying C++ web services and processing SOAP messages. Axis C++ architecture closely follows Axis Java in Handler and message paths.</p>
  <div class="h2">
  <h2>Handlers and the Message Path in Axis</h2>
  </div>
  <p>Axis C++ implementation follows how handlers and message paths work in Axis Java implementation. When the central Axis processing logic runs, a series of Handlers are each invoked in order. The order of invocation is determined by two factors - deployment configuration and whether the engine is a client or a server. The object which is passed to each Handler invocation is a <strong>MessageData</strong>
  </p>
  <br>
  <ul>
  <li>Deserializer</li>
  <li>Serializer</li>
  <li>A bag of properties</li>
  <li style="list-style: none">
  <br>
  <br> We will be discussing more on each of this later on this Architecture Guide.</li>
  </ul>
  <div class="h2">
  <h2>Message Path on the Server</h2>
  </div>
  <br>
  <p>
  <img alt="" src="../images/c/ag/massagep.jpg"></p>
  <br>
  <br>
  <br>
  <p>figure 1.0</p>
  <p>Above diagram shows you how the Axis C++ Engine architecture works to invoke functions of AxisC++ Server Engine.</p>
  <br>
  <br>
  <strong>Note:</strong>
  <br>
  <br>
  <p>
  <a name="#massagef"></a>
  </p>
  <div class="h4">
  <h4>Message Flow</h4>
  </div>
  <div class="h2">
  <h2>Handlers and Chains</h2>
  </div>
  <p>
  <img alt="" src="../images/c/ag/pivots.jpg"></p>
  <br>
  <br>
  <p>figure 3.0</p>
  <p>A web service does not necessarily send a response message to each request message, although many do. However, response Handlers are still useful in the message path even when there isn't a response message, e.g. to stop timers, clean up resources, etc. A Chain is a composite Handler, i.e. it aggregates a collection of Handlers as well as implementing the Handler interface</p>
  <p>A Chain also has similarities to the Chain of Responsibility design pattern in which a request flows along a sequence of Handlers until it is processed. Although an Axis Chain may process a request in stages over a succession of Handlers, it has the same advantages as Chain of Responsibility: flexibility and the ease with which new function can be added. Back to message processing -- a message is processed by passing through the appropriate Chains. A message Data is used to pass the message and associated environment through the sequence of Handlers. The model is that Axis Chains are constructed offline by having Handlers added to them one at a time. Then they are turned online and message data start to flow through the Chains. Handlers and Chains can be defined to have 'request', 'session', or 'application' scope.</p>
  <p>
  <a name="depend"></a>
  </p>
  <div class="h4">
  <h4>1.Axis Engine</h4>
  </div>
  <p>
  <img alt="" src="../images/c/ag/d1-3.jpg"></p>
  <br>
  <br>
  <p>
  <a name="start"></a>
  </p>
  <div class="h4">
  <h4>2.HandlerPool</h4>
  </div>
  <p>
  <br>1. Loads and keeps Transport and Global handlers.<br>2. Loads service specific handlers when needed and unloads when needed.<br>3. Loads target web service handler when needed and unloads when needed.</p>
  <p>In order for the HandlerLoader to dynamically load a class, every DLL (or Shared object) must have following export functions.</p>
  <p>int GetClassInstance(DCLInterface **inst);</p>
  <p>int DestroyInstance(DCLInterface *inst);</p>
  <p>AxisEngine has no idea of any web service methods in the deployed web service class that is dynamically loaded from a DLL. Therefore in order to communicate with loaded class we have to have a known interface. This interface is known as <strong>BasicHandler</strong>and is known to AxisEngine. This interface is implemented by every webservice and a handler.</p>
  <p>
  <a name="msoap"></a>
  </p>
  <div class="h4">
  <h4>3.Message Model</h4>
  </div>
  <br>
  <br>
  <br>
  <br>
  <br>
  <p>
  <img alt="" src="../images/c/ag/soap.jpg"></p>
  <br>
  <br>
  <p>
  <a name="install-test"></a>
  </p>
  <div class="h4">
  <h4>4.Soap Deserializer</h4>
  </div>
  <p>Currently the Soap Deserializer is implemented using SAX2 parser. Soap Deserializer exposes and API such that the API is independent of the implementation.</p>
  <p>
  <a name="deploy"></a>
  </p>
  <div class="h4">
  <h4>5.Soap Serializer</h4>
  </div>
  <p>Soap Serializer's task is to generate the SOAP stream to be sent. There are a set of functions (API that is the opposite functionality with Soap Deserializer). Once the Serializer is given all the information that is required to generate a SOAP using the API, the getStream(..) function can be used to generate the SOAP message.</p>
  <p>
  <a name="test"></a>
  </p>
  <div class="h4">
  <h4>6.WSDD Module</h4>
  </div>
  <p>
  <a name="wrapper"></a>
  </p>
  <div class="h4">
  <h4>WSDL2Ws Tool</h4>
  </div>
  <a href="WSDL2Ws.html">WSDL2Ws.html</a>
  <br>
  <br>
  <p>
  <a name="Dbook"></a>
  </p>
  <div class="h4">
  <h4>Diagram Book</h4>
  </div>
  <p>This <a href="usecase.html">Diagram Book</a> includes Following Diagrames which are drawn to describe Axis Cpp Engine and it's process.</p>
  <p>1) Use case diagram(s)</p>
  <p>2) Sequence diagrams</p>
  <p>3) Class diagrams(s)</p>
  <p>4) Deployment diagram(s)</p>
  <p>
  <a name="open"></a>
  </p>
  <div class="h4">
  <h4>Open Issues</h4>
  </div>
  <hr noshade="noshade" size="1">
  <div id="pdf" align="right">
  <a href="ArchitectureGuide.pdf"><img alt="PDF" src="../../skin/images/pdfdoc.gif" class="skin"><br>
            PDF</a>
  </div>
  </div>
  </div>
  </div>
  </td>
  <!--================= end Content ==================-->
  </tr>
  </tbody>
  </table>
  <!--================= end Main ==================-->
  <!--================= start Footer ==================-->
  <div id="footer">
  <table summary="footer" cellspacing="0" cellpadding="4" width="100%" border="0">
  <tbody>
  <tr>
  <!--================= start Copyright ==================-->
  <td colspan="2">
  <div align="center">
  <div class="copyright">
                Copyright &copy; 2000-2004&nbsp;The Apache Software Foundation. All rights reserved.
              </div>
  </div>
  </td>
  <!--================= end Copyright ==================-->
  </tr>
  <tr>
  <td align="left">
  <!--================= start Host ==================-->
  <!--================= end Host ==================--></td><td align="right">
  <!--================= start Credits ==================-->
  <div align="right">
  <div class="credit"></div>
  </div>
  <!--================= end Credits ==================-->
  </td>
  </tr>
  </tbody>
  </table>
  </div>
  <!--================= end Footer ==================-->
  </body>
  </html>