[Project] Extended documentation with architecture

This commit is contained in:
Robert von Burg 2016-09-15 19:12:40 +02:00
parent 55fb3a53c8
commit 9a7d93d496
5 changed files with 158 additions and 1 deletions

View File

@ -55,6 +55,7 @@
<p>Currently we have the following topics of discussion:</p>
<ul>
<li><a href="documentation_architecture.html">Strolch Architecture</a></li>
<li><a href="documentation_do_and_dont.html">Strolch Do and Dont</a></li>
<li><a href="documentation_runtime.html">Strolch Runtime Configuration</a></li>
<li><a href="documentation_realms.html">Strolch Realms</a></li>

View File

@ -0,0 +1,152 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="google-site-verification" content="CPhbjooaiTdROm7Vs4E7kuHZvBfkeLUtonGgcVUbTL8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" href="ico/favicon.ico">
<title>Strolch: Architecture</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="css/custom.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script><![endif]-->
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="index.html">Strolch</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="index.html">Overview</a></li>
<li><a href="api.html">API</a></li>
<li class="active"><a href="documentation.html">Documentation</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="development.html">Development</a></li>
<li><a href="blog.html">Blog</a></li>
</ul>
</div>
<!--/.nav-collapse -->
</div>
</div>
<div class="container">
<div class="page-header">
<h1 class="page-title">Documentation: Architecture</h1>
<p class="lead page-description">This page discusses the architecture of a Strolch Agent</p>
</div>
<div class="content">
<h2>Birds View</h2>
<p>A Strolch agent's architecture can be seen as a simple three-tier architecture. The presentation layer is
mostly a web frontend, where the communication with the agent is done via REST API calls.</p>
<p>The agent itself implements the business logic using Services, Commands, Queries etc.</p>
<p>The agent can communicate with other 3rd systems using any API, where it is preferred to use JSON over
REST.</p>
<p>The agent can use a standard RDBMS as a storage system, where currently DAOs have been implemented only for
PostgreSQL. Should it be required, then any JDBC cabable RDBMS can be used, as no PostgreSQL specific SQL
commands are used.</p>
<p>The following diagram helps visualize this:</p>
<img src="images/Strolch-Bird-View.svg" class="img-responsive center-block" alt="Strolch Agent Bird View">
<br/>
<h2>Squirrel View</h2>
<p>The following diagram shows a more detailed view of the architecture of a Strolch Agent.</p>
<img src="images/Strolch-Squirrel-View.svg" class="img-responsive center-block"
alt="Strolch Agent Squirrel View">
<p>A Strolch agent consists of the following main parts:</p>
<ul>
<li>REST Endpoints &rarr; expose an API to access the Strolch agent outside of the Java VM</li>
<li>Services and Commands &rarr; implements business logic</li>
<li>Queries &rarr; implements specific queries against the Strolch model</li>
<li>Components &rarr; Implements additional logic, which is best implement as a component. E.g. active
components which have threads, etc.
</li>
<li>Realms &rarr; implements multi-tenant capabilities</li>
</ul>
<p>In addition to the main parts, Strolch contains inherit capabilities, which gives Strolch unique features
when compared to other Java Frameworks:</p>
<ul>
<li>Privileges &rarr; Strolch is user agnostic and any action, i.e. Service, Query, etc. is authorized
against the authenticated user.
</li>
<li>Transactions &rarr; Transactions handle locking/unlocking of objects, updating the model and are the
central API for the developer.
</li>
<li>Observers &rarr; modifications to the model are propagated to listeners using the observer pattern.</li>
<li>Versioning &rarr; modifications to objects are versioned and thus can be rolled back at a later time.
</li>
<li>Policies &rarr; Policies allow injecting different algorithms. All root elements can store Policy
definitions, so that a service can delegate to a Policy and thus behave differently, depending on the
element being accessed.
</li>
</ul>
<!-- content here -->
</div>
<!-- /.content -->
<div id="footer">
<div class="container">
<p class="text-muted">&copy; Strolch / <a href="mailto:eitch@eitchnet.ch">Robert von Burg</a> / Hosting by
<a href="http://www.eitchnet.ch">eitchnet.ch</a></p>
</div>
</div>
</div>
<!-- /.container -->
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
<!-- Piwik -->
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
var u = (("https:" == document.location.protocol) ? "https" : "http") + "://piwik.eitchnet.ch/";
_paq.push(['setTrackerUrl', u + 'piwik.php']);
_paq.push(['setSiteId', 2]);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.type = 'text/javascript';
g.defer = true;
g.async = true;
g.src = u + 'piwik.js';
s.parentNode.insertBefore(g, s);
})();
</script>
<noscript><p><img src="http://piwik.eitchnet.ch/piwik.php?idsite=2" style="border:0;" alt=""/></p></noscript>
<!-- End Piwik Code -->
</body>
</html>

View File

@ -51,7 +51,7 @@
<div class="content">
<p>Realms implement multi-mandate capabilities. A Strolch agent can have an arbitrary number of realms
<p>Realms implement multi-tenant capabilities. A Strolch agent can have an arbitrary number of realms
configured and each realm has its own persistence configuration, allowing to separate mandates
completely.</p>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 17 KiB