mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00

git-svn-id: http://scm.dspace.org/svn/repo/trunk@1410 9c30dcfa-912a-0410-8fc2-9e0234be79fd
139 lines
5.4 KiB
HTML
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 ©
|
|
2002-2004 MIT and Hewlett Packard </address>
|
|
</body>
|
|
</html>
|