Server

Tntnet

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche
Tntnet-Logo
Tntnet-Logo

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.

[Bearbeiten] 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.

[Bearbeiten] 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
  • live 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)

[Bearbeiten] Weblinks

Copyright © 2005-2010 Hardware-Aktuell. Alle Rechte vorbehalten.