10gen: Komplette Plattform zum Ablauf von Webanwendungen

Neben der Anwendung selbst steht auch eine Administrationsoberfläche zur Verfügung. Für den Zugriff auf diese muss zunächst ein Benutzer dafür angelegt werden. Dazu existiert im Verzeichnis appserver/bin/scripts das Skript adduser (übrigens ist dieses Skript gemäß der Architektur auch in JavaScript). Das Skript muss aus dem Verzeichnis appserver (unterhalb des Hauptverzeichnisses) aufgerufen werden. Der Start erfolgt dann mittels bin/scripts/adduser samplesite markus markus@xyz.de jaxenter admin. Die Erläuterung der Parameter erhält man durch Aufruf von adduser ohne weitere Parameter. Bei der Administrationsanwendung handelt es sich natürlich auch um eine Webanwendung (Abb. 3). Diese ist über /admin erreichbar.

Abb. 3: Die Adminstrationsoberfläche für samplesite

Solch eine Administrationsseite enthält folgende Funktionen:

  • Management der Datenbank
  • Management der Benutzer
  • Dateimanager
  • Interaktive JavaScript Shell

Beim Bedienen der Administrationsoberfläche bemerkt man schnell, dass es sich noch um eine frühe Version des SDK handelt, denn hier und da treten bei der Auswahl der Menüpunkte Fehler auf.

Was sehen wir eigentlich?

Besonders beindruckt wird man von der Beispielapplikation nicht sein, denn mehr als drei Zeilen Text und ein Icon bekommt man nicht zu sehen. Um ein besseres Verständnis für die Programmierung einer Anwendung mit 10gen zu bekommen, soll etwas unter die Oberfläche der einfachen Beispielanwendung gesehen werden. Die Anwendung enthält einen Controller mit dem Namen controller.jxp. Das Mapping darauf ist in der Konfigurationsdatei _init.js (Methode mapUrlToJxpFile) definiert. Der Controller bindet drei Templates ein. Diese Templates stellen die derzeit möglichen Varianten zum Schreiben eines Templates dar (Tabelle 1).

Tabelle 1: Mögliche Varianten zum Schreiben von Templates in 10gen
Name der Template-Variante Beschreibung
Djang10 Djang10 Templates sind sehr ähnlich den Django
Html Templates auf Basis von HTML. Auf Variablen kann über $variablenname zugegriffen werden.
jxp Wie der Name schon vermuten lässt, lehnen sich JXP Templates sehr stark an JSP’s an. Der Unterschied ist, dass im Gegensatz von Java hier Javascript zum Einsatz kommt.

Eine interessante Erkenntnis, die man diesem einfachen Beispiel abgewinnen kann, ist die, dass die unterschiedlichen Template-Technologien miteinander vermischt werden können.

Ich will mehr

Klar, mit den bisher aufgezeigten Möglichkeiten kann noch keine große Anwendung gebaut werden. Um auch mal einen kompletten CRUD-(Create-Read-Update-Delete)-Ablauf begutachten zu können, wird die Anwendung Sample Student (zu starten über ./runserver.sh ./sites/sample-student/) mitgeliefert. Diese Anwendung greift auch auf die zugrunde liegende Datenbank Mongo zu. Erwähnenswert an dieser Stelle, dass zum Zugriff auf die Datenbank die Hilfsklasse ModelBase zur Verfügung steht. Dies ist ähnlich zur AppEngine von Google, denn hier muss (in diesem Fall sogar zwingend) von der Klasse google.appengine.ext.db.Model abgeleitet werden, um auf die Datenbank zugreifen zu können. Dieses Prinzip spiegelt den Gedanken von Plattform wieder, denn der Entwickler soll sich mehr auf die Anwendungslogik als z.B. auf die Datenbank konzentrieren. Eine Schritt-für-Schritt-Anleitung für diese Anwendung steht auch auf der Seite von 10gen bereit.

Der siebte Himmel – oder doch nur eine graue Wolke?

Die Vision davon, dass der Entwickler sich nicht mehr um infrastrukturelle Dinge kümmern muss, sondern sich auf die Anwendungslogik konzentrieren kann, kommt mit 10gen in eine greifbare Nähe. Dass hier JavaScript als Hauptsprache gewählt wurde, muss der eine oder andere sicherlich erst einmal verarbeiten. Vielleicht hilft hierfür auch die Erklärung von Elliot Horowitz, dem CTO von 10gen. Interessant ist auch, dass es bereits produktive Anwendungen auf 10gen Basis gibt: Clustorstock, Silicon Alley Insider und The Business Sheet. 10gen ist rundherum eine spannende Technologie, sowohl für Entwickler als auch für Anbieter im Hostingbereich. Schon allein die JavaScript-Basisbibliothek CoreJS ist einen Blick wert und sei es nur, um Ideen zu bekommen, wie große Anwendungen mit JavaScript am besten umgesetzt werden. Schauen Sie es sich an und fliegen Sie einfach eine Runde auf der Wolke.

Markus Stäuble ist CTO (Head of Technology) bei namics (deutschland) GmbH, einem führenden IT- und Web-Dienstleister. Darüber hinaus ist er freier Autor von Fachartikeln.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.