- Tntnet
-
Tntnet ist ein freier in C++ geschriebener Webserver welcher andere C++-Programme zur Bearbeitung von Anfragen als Modul einbinden kann. Damit lassen sich Webapplikationen in C++ entwickeln. Die entsprechenden Schnittstellen werden von tntnet bereitgestellt, etwa für den Import der per GET oder POST übergebenen Daten, die Kommunikation über das Netzwerksocket und die Parallelverarbeitung der eintreffenden Anfragen.
Durch die Verwendung der Programmiersprache C++ können moderne Programmiertechniken wie Objektorientierung, Vererbung und Polymorphismus mit der Geschwindigkeit von nativ im Maschinencode laufenden Programmen kombiniert werden. Im Gegensatz zu Skriptsprachen, die für Webapplikationen sehr häufig eingesetzt werden, wird der Programmcode von compilierten Programmen nicht zur Laufzeit übersetzt, was deren Ausführung beschleunigt.
Ein häufiger Trugschluss ist allerdings, dass übersetzte Programme im Binärformat auch bei herkömmlichen Webservern einen Geschwindigkeitsvorteil brächten. Dies ist nur mit zusätzlichen Programmen wie cgid oder FastCGI möglich. Der Grund liegt darin, dass das Starten der Applikation, d.h. der Fork des Webserverprozesses zu lange dauert.
Daher ist es sinnvoller Webapplikationen, die im Binärformat laufen sollen, direkt in den Webserver zu integrieren. Beim weit verbreiteten Webserver Apache ist dies mit Modulen möglich. An diesem Punkt setzte der Entwickler von Tntnet an. Das Problem, welches sich hier stellt ist, dass diese Webserver üblicherweise in C geschrieben sind. Die Verwendung von C++ und damit der og. Vorteile moderner Programmiersprachen wird somit erschwert oder gar unmöglich.
Aus diesem Grunde entwickelte Tommi Mäkitalo das Framework Tntnet. Tntnet ist also einerseits ein Webserver, der aber im Quellcode vorliegt. So lässt sich der Webserver wie eine Vorlage für eigene Programme verwenden. Fertig übersetzt ergeben sie ein Programm im Binärformat welches einmal gestartet Webanfragen entgegennimmt und mit der integrierten Webapplikation bearbeitet. Die Webapplikation befindet sich zusammen mit dem Serverprozess immer im Arbeitsspeicher.
Benchmarks haben ergeben, dass Tntnet aus diesem Grunde bei dynamischen Webseiten schneller ist als alle getesteten Webserver. Verglichen wurde Tntnet mit dem meistverbreiteten Apache und dem für seine Geschwindigkeit bekannten lighttpd. Nur bei statischen Seiten (auf dem Dateisystem gespeicherte Dateien die unverändert übermittelt werden) konnten diese Server minimal besser abschneiden, da sie direkt die Betriebssystemfunktion sendfile des Kernels verwenden. Diese Möglichkeit hat Tntnet nicht, dafür liegen seine Stärken im Einsatz als Webapplikationsserver. Für rein statische Inhalte ist ein herkömmlicher Webserver sinnvoller.
Weitere Bibliotheken stellen Hilfsmittel für den Programmierer bereit.
Inhaltsverzeichnis
Bestandteile
Die Programmschnittstellen stellt tntnet über eine Bibliothek mit dem Namen Cxxtools bereit. Um eine mit tntnet geschriebene Applikation auf dem eigenen Rechner übersetzen zu können ist die Installation der Cxxtools notwendig.
Mit der Bibliothek Tntdb werden Zugriffe auf Datenbanken abstrahiert. Somit lassen sich Programme entwickeln, die unabhängig sind von der eingesetzten Datenbank. Tntdb stellt die Verbindung zwischen dem in Tntnet laufenden Programm und derzeit der Datenbanken Postgres, SQLite3, MySQL und Oracle her.
Die Software ist unter den Bedingungen der GNU General Public License (Version 2) erhältlich.
Applikationen
- tntwiki – eine in C++ programmierte Wiki-Engine welche die Datenbankstruktur von MediaWiki verwendet
- tntzenoreader – ein Betrachtungsprogramm für die Zeno-Dateien der Wikipedia-DVD
- VDR live-plugin Weboberfläche für VDR – eine freie Software für den Empfang und die Aufnahme von digitalem Fernsehen (DVB)
- diverse Firmen- und Projekthomepages
- diverse Beispielapplikationen (im Tntnet-Paket im Ordner /demos/ enthalten)
Ende 2008 entstand aus dem tntzenoreader-Projekt openZIM[1], eine freie Implementierung des aus Zeno entstandenen Dateiformats ZIM (Zeno Improved). Es soll zukünftig für Wikipedia DVDs und andere elektronischen Bibliotheken genutzt werden. openZIM stellt neben der erweiterten tntzenoreader (neu: ZIMreader) auch alle Werkzeuge zum Herunterladen (wiki2html), Schreiben (ZIMwriter) und Indizieren (ZIMindexer) zur Verfügung. Hauptentwickler ist auch hier Tommi Mäkitalo, es kommen weiterhin die Komponenten des Tntnet Frameworks zum Einsatz, auch wenn nur im ZIMreader Tntnet selbst enthalten ist.
Weblinks
- offizielle Webpräsenz
- Interview mit Tommi Mäkitalo vom 16. November 2006 von RadioTux
Quellen
Wikimedia Foundation.