Files
DSpace/dspace/docs/architecture.html
Jim Downing c11b283954 Updated checker doco
git-svn-id: http://scm.dspace.org/svn/repo/trunk@1410 9c30dcfa-912a-0410-8fc2-9e0234be79fd
2006-01-23 12:00:14 +00:00

139 lines
5.4 KiB
HTML

<!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>