Code Search for Developers
 
 
  

architecture.html from DSpace at Krugle


Show architecture.html syntax highlighted

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
  <title>DSpace System
Documentation: Architecture</title>
  <link rel="StyleSheet" href="style.css" type="text/css">
  <meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1">
</head>
<body>
<h1>DSpace
System Documentation: Architecture</h1>
<p><a href="index.html">Back to contents</a></p>
<h2><a name="overview">Overview</a></h2>
<p>The DSpace system is organized
into three layers, each of which
consists of a number of components.</p>
<p class="figure"><img src="image/architecture-600x450.gif"
 alt="Application Layer, Business Logic Layer, Storage Layer"></p>
<p class="caption">DSpace
System Architecture</p>
<p>The storage layer is
responsible for physical storage of metadata
and content. The business logic layer deals with managing the content
of the archive, users of the archive (e-people), authorization, and
workflow. The application layer contains components that communicate
with the world outside of the individual DSpace installation, for
example the Web user interface and the <a
 href="http://www.openarchives.org/">Open Archives
Initiative</a>
protocol for metadata harvesting service.</p>
<p>Each layer only invokes the
layer below it; the application layer
may not used the storage layer directly, for example. Each component in
the storage and business logic layers has a defined public API. The
union of the APIs of those components are referred to as the Storage
API (in the case of the storage layer) and the DSpace Public API (in
the case of the business logic layer). These APIs are in-process Java
classes, objects and methods.</p>
<p>It is important to note that
each layer is <em>trusted</em>.
Although the logic for <em>authorising
actions</em> is in the business
logic layer, the system relies on individual applications in the
application layer to correctly and securely <em>authenticate</em>
e-people. If a 'hostile' or insecure application were allowed to invoke
the Public API directly, it could very easily perform actions as any
e-person in the system.</p>
<p>The reason for this design
choice is that authentication methods
will vary widely between different applications, so it makes sense to
leave the logic and responsibility for that in these applications.</p>
<p>The source code is organized to
cohere very strictly to this
three-layer architecture. Also, only methods in a component's public
API are given the <code>public</code>
access level. This means that
the Java compiler helps ensure that the source code conforms to the
architecture.</p>
<table>
  <caption>Source Code Packages</caption> <tbody>
    <tr>
      <th>Packages within</th>
      <th>Correspond to components
in</th>
    </tr>
    <tr>
      <td><code>org.dspace.app</code></td>
      <td>Application layer</td>
    </tr>
    <tr>
      <td><code>org.dspace</code></td>
      <td>Business logic layer
(except <code>storage</code>
and <code>app</code>)</td>
    </tr>
    <tr>
      <td><code>org.dspace.storage</code></td>
      <td>Storage layer</td>
    </tr>
  </tbody>
</table>
<p>The storage and business logic
layer APIs are extensively documented
with Javadoc-style comments. Generate the HTML version of these by
entering the source directory and running:</p>
<pre>ant public_api</pre>
<p>The package-level documentation
of each package usually contains an
overview of the package and some example usage. This information is not
repeated in this architecture document; this and the Javadoc APIs are
intended to be used in parallel.</p>
<p>Each layer is described in a
separate section:</p>
<ul>
  <li><a href="storage.html">Storage Layer</a>
    <ul>
      <li><a href="storage.html#rdbms">RDBMS</a></li>
      <li><a href="storage.html#bitstreams">Bitstream Store</a></li>
    </ul>
  </li>
  <li><a href="business.html">Business Logic Layer</a>
    <ul>
      <li><a href="business.html#core">Core Classes</a></li>
      <li><a href="business.html#content">Content Management API</a></li>
      <li><a href="business.html#workflow">Workflow System</a></li>
      <li><a href="business.html#administer">Administration Toolkit</a></li>
      <li><a href="business.html#eperson">E-person/Group Manager</a></li>
      <li><a href="business.html#authorize">Authorisation</a></li>
      <li><a href="business.html#handle">Handle Manager/Handle
Plugin</a></li>
      <li><a href="business.html#search">Search</a></li>
      <li><a href="business.html#browse">Browse API</a></li>
      <li><a href="business.html#history">History Recorder</a></li>
      <li><a href="business.html#checker">Checksum Checker</a></li>
    </ul>
  </li>
  <li><a href="application.html">Application Layer</a>
    <ul>
      <li><a href="application.html#webui">Web User Interface</a></li>
      <li><a href="application.html#oai">OAI-PMH Data Provider</a></li>
      <li><a href="application.html#itemimporter">Item Importer
and Exporter</a></li>
      <li><a href="application.html#transferitem">Transferring
Items Between DSpace Instances</a></li>
      <li><a href="application.html#registration">Registration</a></li>
      <li><a href="application.html#mets">METS Tools</a></li>
      <li><a href="application.html#mediafilters">Media Filters</a></li>
      <li><a href="application.html#filiator">Sub-Community
Management</a></li>
    </ul>
  </li>
</ul>
<hr>
<address> Copyright &copy;
2002-2004 MIT and Hewlett Packard </address>
</body>
</html>




See more files for this project here

DSpace

Open Source Digital Asset Management system that enables services for access, provision, stewardship and re-use of digital assets with a focus on educational and research materials

Project homepage: http://sourceforge.net/projects/dspace
Programming language(s): Java,JSP,XML
License: other

  image/
    architecture-600x450.gif
    data-model.gif
    db-schema.gif
    ingest.gif
    web-ui-flow.gif
    workflow.gif
  originals/
    architecture.vsd
    data-model.vsd
    ingest.vsd
    web-ui-flow.vsd
    workflow.vsd
  appendix.html
  application.html
  architecture.html
  business.html
  configure.html
  controlledvocabulary.xsd
  directories.html
  functional.html
  history.html
  index.html
  install.html
  introduction.html
  postgres-upgrade-notes.txt
  storage.html
  style.css
  submission.html
  update.html