Der Tntnet-Witzard unterstützt jetzt die wichtigsten Funktionalitäten

Standard

snapshot_tntwebwizardSeit Anfang Februar arbeite ich an einem Wizard mit Weboberfläche, um schnell und leicht Tntnet-Projekte zu erstellen. Das C++-Webframework Tntnet schreibt dem Anwender keinerlei Doktrin vor, wie er sein Projekt zu organisieren hat. Diese Freiheit macht es dem Einsteiger sehr einfach zu schnellen Ergebnissen zu kommen. Geht es aber darum, größere Projekte umzusetzen, braucht es dann schon etwas Erfahrung, um den Code sinnvoll zu strukturieren. Auf der Website von Tntnet gibt es eine ganze Reihe von hilfreichen Howtos und Beispielen zu verschieden Themen. Hier beginnt nun eine ziemlich steile Lernkurve.

Der TNT-WEB-WIZARD soll dabei helfen, diese Lernkurve etwas abzumildern. Er hilft dabei, ein neues Projekt zu erstellen und generiert den Code nach „best practice“. Es gibt eine Reihe von Funktionen, die Tntnet nicht von Hause aus mitliefert, zum Beispiel für CSRF (cross site request forgery). Es ist recht einfach, das mit wenig Code selbst zu implementieren, wenn man weiß wie e geht. TNT-WEB-WIZARD legt diesen Code für den Benutzer an und hilft ihm ihn richtig einzusetzen.

Darüber hinaus erstellt TNT-WEB-WIZARD eine Verzeichnisstruktur in der MVC (model view controller) klar erkennbar und gegliedert ist. Komponenten werden in separaten Verzeichnissen mit eigenem Namespace organisiert. Dies ist wichtig, um den Code großer Projekte langfristig pflegen zu können. Alles was TNT-WEB-WIZARD macht, kann man auch per Hand anlegen. Es hat aber zwei große Vorteile hierfür den TNT-WEB-WIZARD zu benutzen:

  • A) Alle Komponenten weisen die selbe Struktur auf (egal wer sie in einem Team anlegt). Das erleichtert das Zurechtfinden im Code anderer Team-Mitglieder
  • B) Es geht schneller. Denn um eine „full featured“ MVC-Komponente zu erstellen, kommen schnell einige hundert Zeilen Code zusammen.

Um TNT-WEB-WIZARD benutzen zu können, muss es nicht lokal installiert sein. Die Bedienung erfolgt über eine Weboberfläche und der generierte Code wird zum Schluss heruntergeladen. Bestehender Projekt-Code kann von GitHub hoch geladen werden und mit dem TNT-WEB-WIZARD um neue Komponenten erweitert werden.

TNT-WEB-WIZARD legt zwei Dateien im Basis-Verzeichnis an, um Projekte zu verwalten. Zum einen eine „tntwebwizard.pro“ und eine „Makefile.tnt“. In der „tntwebwizard.pro“ werden die Projekt-Vorgaben gespeichert. Existiert die Datei nicht, wird sie neu angelegt. Die zweite Datei die „Makefile.tnt“ beinhaltet die Regeln, wie das Projekt übersetzt werden muss. Diese Datei wird von TNT-WEB-WIZARD angelegt und gepflegt. Wenn man das Build-Tool Tntmake verwendet, ist das Übersetzen sehr einfach. Möchte man lieber GNU Make, CMake, QMake oder was auch immer verwenden, muss man sich selbst darum kümmern, diese Tools mit Tntnet zum Laufen zu bekommen. TNT-WEB-WIZARD verwendet Tntmake, da das Dateiformat Json ist und sich so sehr gut mit dem TNT-WEB-WIZARD parsen und bearbeiten lässt.

Ich glaube, wenn man den TNT-WEB-WIZARD geschickt einsetzt, kann man bei der Implementierung seiner Ideen einige Zeit sparen und sich besser auf Geschäftslogik konzentrieren. In TNT-WEB-WIZARD sind noch nicht alle meiner Ideen umgesetzt. Den aktuellen Stand kann man auf http://peruschim.de:8010/core/about sehen. Sicher sind auch noch einige Fehler unentdeckt. Möglicherweise gibt es auch noch ein paar gute Ideen für weitere Funktionalitäten. Wem etwas auffällt kann entweder den Issues-Trecker nutzen oder mir eine Mail schreiben (briefkasten@olaf-radicke.de).

Die Dokumentation ist nur in Form von Doxygen-Kommentaren vorhanden. Mit dem Befehl „doxygen ./Doxyfile“ kann man sich eine API-Doku generieren. Ich habe versucht das Programm so zu gestalten, dass man es auch ohne Doku durch „trial and error“ zum Ziel kommen kann. Natürlich ist Doku nie verkehrt und wer mich dabei unterstützen mag, ist dazu herzlich eingeladen. Als nächstes plane ich „Black-Box-Tests“ um TNT-WEB-WIZARD besser und automatisch zu testen. Dazu werden noch Artikel erscheinen, in den ich von meinen Erfahrungen dabei berichten werde.


Creative Commons Lizenzvertrag