Tntnet

Tntnet
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.

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

Quellen

  1. Nachricht zur Gründung des openZIM-Projekts

Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Tntnet — is a free in C++ coded Webserver, which enables other C++ programs to bundle requests modules. This way, users are enabled to develop Web applications in C++. The GET and POST requests are interpreted by the tntnet server and sent to the web… …   Wikipedia

  • Comparison of application servers — Proprietary application servers provide system services in a well defined but proprietary manner. The application developers develop programs according to the specification of the application server. Dependence on a particular vendor is the… …   Wikipedia

  • Comparison of lightweight web servers — Lightweight web servers are web servers which have been designed to run with very small resource overhead because of hardware, environment, or simply for the challenge of it.[citation needed] Many of these servers have been created as a mental… …   Wikipedia

  • Comparison of web application frameworks — This is a comparison of notable web application frameworks. Contents 1 General 1.1 Perl 1.2 PHP 1.3 Java 1.4 Python …   Wikipedia

  • HTTP-Server — Der Host des ersten Webservers von Tim Berners Lee am CERN Ein Webserver (lat. servus, engl. server „Diener, Dienst“) ist ein Computer, der Dokumente an Clients wie z. B. Webbrowser überträgt. Als Webserver bezeichnet man den Computer mit… …   Deutsch Wikipedia

  • HTTP Server — Der Host des ersten Webservers von Tim Berners Lee am CERN Ein Webserver (lat. servus, engl. server „Diener, Dienst“) ist ein Computer, der Dokumente an Clients wie z. B. Webbrowser überträgt. Als Webserver bezeichnet man den Computer mit… …   Deutsch Wikipedia

  • WWW-Server — Der Host des ersten Webservers von Tim Berners Lee am CERN Ein Webserver (lat. servus, engl. server „Diener, Dienst“) ist ein Computer, der Dokumente an Clients wie z. B. Webbrowser überträgt. Als Webserver bezeichnet man den Computer mit… …   Deutsch Wikipedia

  • Web-Server — Der Host des ersten Webservers von Tim Berners Lee am CERN Ein Webserver (lat. servus, engl. server „Diener, Dienst“) ist ein Computer, der Dokumente an Clients wie z. B. Webbrowser überträgt. Als Webserver bezeichnet man den Computer mit… …   Deutsch Wikipedia

  • Web Server — Der Host des ersten Webservers von Tim Berners Lee am CERN Ein Webserver (lat. servus, engl. server „Diener, Dienst“) ist ein Computer, der Dokumente an Clients wie z. B. Webbrowser überträgt. Als Webserver bezeichnet man den Computer mit… …   Deutsch Wikipedia

  • Сравнение каркасов веб-приложений — Это сравнительная таблица фреймворков веб приложений. Содержание 1 Фреймворки 1.1 ASP.NET 1.2 C++ 1.3 ColdFusion Markup Language (CFML) …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”