Tntnet
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 application program, which will sent a reply back over the network.
Because of the use of C++, modern programming techniques like Object-oriented programming and polymorphism can be used natively. Unlike scripts, the webserver does not need to interpret the application's code at run time, but it is compiled in advance.
Also, the web application program, being native, will be faster than scripts. This, of course, is also possible with programs like cgid or fastcgi. Though, it takes some time to start the applications in these solutions, because of the nature of forks.
Tntnet solves this by directly integrating the web application into the webserver. When working with a big webserver like Apache HTTP Server, this would be possible using the module system. In fact, this was the original setup of tntnet. But soon, the developers reached a severe problem, namely that Apache is written in C (programming language), thus it would be hard to let Apache communicate with tntnet, which is written in C++. The use of C++, to get the advantages of modern programming, are made practically impossible this way.
In this situation, Tommi Mäkitalo developed the tntnet framework. Tntnet is also a webserever, which is present in the source code. This way, tntnet acts as a layer in front of the actual web application. When in use, the webserver part receives the HTTP requests, interpretes them and sends them to the (binary) web application part. The web application and the webserver are constantly talking to each other.
Benchmarks have shown that tntnet, with its particular setup, is faster for dynamic websites than all other tested webservers. Tntnet was compared with a lot of Apache modules and lighttpd. Only for statical websites, lighttpd performed better than tntnet, because it could directly call the sendfile kernel call. Tntnet doesn't have this option, so it might not be the perfect choice for purely statical websites, instead a system like lighttpd would be better.
Extra libraries
Extra libraries provide more tools for the programmer.
Cxxtools
Tntnet uses a library of tools named Cxxtools. To build applications written using tntnet, Cxxtools is needed.
Tntdb
The library Tntdb is a database abstraction layer. The programs developed using Tntdb do not depend on a specific type of underlying database system. Tntdb can handle the following database systems:
- Postgres
- SQLite3
- MySQL
- Oracle
License
The tntnet software is available under the GNU General Public License (version 2) license.
Applications
- tntwiki
- tntzenoreader - a system for using the Wikipedia-DVD
- live Weboberfläche für VDR - a free software package for the recording of digital video (DVB)
- Several commercial websites and websites for projects
- Several example applications (in the /demos/ directory of the tntnet package)
External links
- Tntnet homepage
- Example applications
- Interview with Tommi Mäkitalo at the 16th of November 2006 November 2006 by RadioTux (in German)
de:Tntnet