Duration: 2005-ongoing
Contact Person: Univ.-Prof. Dr. Gustaf Neumann
NaviServer is a programmable web server written in C and Tcl. It offers many features for building custom web sites. The implementation is high performance, but the interface is easy to use, at both the C and Tcl level.
Features include:
- Hybrid multi-threaded / async architecture for easy programmer interface and high performance
- Threads isolated from each other with own Tcl interpreters [1]
- Shares data between threads easily with protected variables and caches[2]
- Pooled database connections[3] (also: nsdbi)
- Dynamic Pages in TCL [4] (PHP- and ASP-like syntax)
- Built-in cron-like scheduling
- Watchdog for restarting server
- Efficient handling for large up- and downloads (spooling and writer threads)
- Optional non-blocking log file writing (to avoid file system latencies, since 4.99.4)
- Fully async drivers for HTTP and SSL (based on poll(), supporting several 1000 file descriptors, since 4.99.4)
- Gzipped delivery of dynamic and static content (since 4.99.5)
- Support for IPv6 (since 4.99.11)
- Integrated support for HTTPs (since 4.99.12, was an extra module called [nsssl] before)
- Native crypto support based on OpenSSL (since 4.99.12, including HMAC, message digests, HOTP (RFC 6238 one time passwords), TOTP (RFC 6238 time based one time passwords)
- Reverse proxy (since 4.99.14, via modules revproxy)
- Dynamic thread pool mapping (since 4.99.15)
- Caching with transaction semantics, rollback changes in cache when e.g. DB rollbacks occur (since 4.99.16)
- Tcl configuration file[5]
- and much, much more..!
Runs (and is tested regularly) on: Linux, Solaris, MacOS X. Also runs on FreeBSD and Windows[6], [7].
For more information: website