mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-15 14:03:17 +00:00

git-svn-id: http://scm.dspace.org/svn/repo/dspace/trunk@5844 9c30dcfa-912a-0410-8fc2-9e0234be79fd
111 lines
4.4 KiB
HTML
111 lines
4.4 KiB
HTML
<!--
|
|
|
|
The contents of this file are subject to the license and copyright
|
|
detailed in the LICENSE and NOTICE files at the root of the source
|
|
tree and available online at
|
|
|
|
http://www.dspace.org/license/
|
|
|
|
-->
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<html>
|
|
<head>
|
|
<!--
|
|
Author: Robert Tansley
|
|
Version: $Revision$
|
|
Date: $Date$
|
|
-->
|
|
</head>
|
|
<body bgcolor="white">
|
|
The API for programming the DSpace system.
|
|
|
|
<h2>DSpace System Architecture</h2>
|
|
|
|
Briefly, DSpace consists of a three-layer architecture:
|
|
<P>
|
|
|
|
<table border="0" cellspacing=0 cellpadding=10>
|
|
<tr>
|
|
<td bgcolor="#fe9693" align="center"><strong>Application Layer</strong></td>
|
|
<td><code>org.dspace.app.*</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#a9d0ed" align="center"><strong>Business Logic Layer</strong></td>
|
|
<td><code>org.dspace.*</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#b6ff96" align="center"><strong>Storage Layer</strong></td>
|
|
<td><code>org.dspace.storage.*</code></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<P>
|
|
Each layer is divided into subsystems. These are stored in separate packages.
|
|
Only the public API of each subsystem should be used by other subsystems.
|
|
Additionally, subsystems in the Application Layer should not use the Storage
|
|
Layer directly.
|
|
<P>
|
|
The top level of each package must contain only public classes and methods that
|
|
are part of the public API of the subsystem. This way, conservative use of
|
|
<code>import</code> ensures that subsystems are only using appropriate public
|
|
APIs.
|
|
<P>
|
|
Test classes for subsystems that have automatic self-tests reside in a
|
|
<code>test</code> sub-package. For example, the browse subsystem tests reside
|
|
in <code>org.dspace.browse.test</code>. Such test classes must also have a name
|
|
that ends in <code>Test.Java</code>, for example <code>BrowseTest.java</code>.
|
|
<P>
|
|
Each of the layers and the packages that are part of them are described below.
|
|
|
|
|
|
<h3>Application Layer</h3>
|
|
|
|
Presently, the application layer consists of:
|
|
|
|
<ul><li>The Web user interface</li>
|
|
<li>The <A href="http://www.openarchives.org/OAI/openarchivesprotocol.html">Open Archives Protocol for Initiative Metadata Harvesting</A> implementation</li>
|
|
<li>Item import and export tools</li>
|
|
<li>The Media Filter tool, which is a batch tool that iterates through the bitstreams in DSpace, and applies filters to bitstreams of a particular format. This can be used to e.g. generate image thumbnails, and extract full-text from documents for indexing.</li>
|
|
<li>The METS tools -- currently just an exporter, which exports DSpace AIPs with the metadata stored in an XML METS file. Soon a corresponding importer will be added too.</li>
|
|
</ul>
|
|
Since this and other applications are
|
|
"customers" of DSpace, they do not need to have strictly defined public APIs. Subsystems in the application layer should be sub-packages of
|
|
<code>org.dspace.app</code>. Subsystems in the application layer should not
|
|
use the storage layer directly.
|
|
|
|
|
|
<h3>Business Logic Layer</h3>
|
|
|
|
This is where the main smarts of the system lie. It consists of a number of
|
|
subsystems, stored in sub-packages of <code>org.dspace</code>, and some core
|
|
classes in <code>org.dspace.core</code>. Sub-packages of org.dspace that are
|
|
not in <code>org.dspace.app</code> or <code>org.dspace.storage</code> are
|
|
business logic subsystems.
|
|
<P>
|
|
<code>org.dspace.content</code> (the content management API) is probably the
|
|
most useful to applications. Other subsystems are generally only directly used
|
|
by applications providing administrative functionality.
|
|
|
|
|
|
<h3>Storage Layer</h3>
|
|
|
|
The storage layer currently consists of two subsystems: The relational
|
|
database management system interface, and the bitstore. These are in
|
|
packages <code>org.dspace.storage.rdbms</code> and
|
|
<code>org.dspace.storage.bitstore</code> respectively. Any new storage
|
|
subsystems should also be sub-packages of <code>org.dspace.storage</code>.
|
|
<P>
|
|
|
|
<h2>More Information</h2>
|
|
|
|
<P>More detailed architectural information for the current stable release of DSpace can be found here:</P>
|
|
|
|
<P><A HREF="http://dspace.org/technology/system-docs/">http://dspace.org/technology/system-docs/</A></P>
|
|
|
|
<P>If you're using a beta or earlier version of DSpace, you should download the 'dspace-docs' documentation package corresponding to the version you're using from the SourceForge download page:</P>
|
|
|
|
<P><A HREF="http://sourceforge.net/project/showfiles.php?group_id=19984">http://sourceforge.net/project/showfiles.php?group_id=19984</A></P>
|
|
|
|
</body>
|
|
</html>
|