Skip to content
Steffen Gorenflo edited this page Jun 18, 2015 · 6 revisions

Locator

Architektur

Grober Überblick über die von uns genuzte Architektur im Backend und Frontend.

Backend

Die Serverseitige Plattform ist iojs (Communityfork von nodejs), welche auf der Google Chrome Engine V8 basiert. Entwickelt wird also mit Javascript, jedoch wird in diesem Projekt Typescript benutzt, was ein Superset von Javascript ist und vor Ausführung in reines Javascript compiliert wird.

Als Paketmanager wird npm (Node Packet Manager) verwendet um Dependencies zu organisieren und externe Module einzubinden. Npm wird auch benutzt um unsere eigenen selbst entwickelten Plugins in unseren Server einzubinden (Dazu später mehr).

Das Server-Framework welches uns die Infrastruktur anbietet und mit welcher wir entwickeln ist hapijs. Dieses Framework erlaubt eine einfache Implementierung des Applikationsservers auf Basis von Plugins. Dabei können alle Funktionalitäten des Servers einfach in andere Module ausgelagert werden und vor dem Serverstart eingebunden werden. Dies hat den Vorteil, dass der tatsächliche Server-Code sehr schlank und übersichtlich ist. Folgender Code veranschaulicht das:

// index.js
Hapi = require('hapi'); // Framework importieren

// Plugins importieren
DatenbankPlugin = require('datenbank-plugin');
Plugin1 = require('plugin1);
Plugin2 = require('plugin2);

server = new Hapi.Server(); // neue Server Instanz erzeugen

server.register([DatenbankPlugin, Plugin1, Plugin2]); // Plugins einbinden

server.start() // Server starten

Mehr ist im Grunde nicht notwendig. In unserem Fall besteht der Server aus dieser einen Datei. Es wurden noch ein paar Funktionalitäten hinzugefügt, die das Entwickeln vereinfachen, z.B. blipp oder swagger

Plugins

Jede Funktionalität ist nach logischen Gründen in hapi-Plugins (npm-module) ausgelagert. Jedes dieser Plugins besitzt den Namespräfix ark-. So ist zum Beispiel ark-user verantwortlich für alle Http-Routen die den User betreffen. Um ein neues Plugin zu erstellen benutzt man am besten den von uns geschriebenen Genarator und folgt dieser Anleitung

Datenbank

Wir benutzen in diesem Projekt die NoSQL-Datenbank couchdb. Die Datenbank läuft auf einem Server in der HTWG und kann dort konfiguriert und maintained werden (siehe Server-Administration)

Der Zugriff auf die Datenbank erfolgt in einem (wie sollte es auch sonst anders sein) separaten Plugin: ark-database, welches beim Server registriert wird und so allen anderen Plugins zur Verfügung gestellt wird. Dabei wird die Nodejs Bibliothek cradle benutzt um mit der Datenbank auf einfache weise zu kommunizieren. (Es gibt jedoch Bestrebungen auf nano umzusteigen)

Clone this wiki locally