Overview

WAFPP is a web application framework written in C++, optimized for performance, small memory footprint, scalability and easy localization. It employs a MVC architecture, using serveral daemons that communicate via SOAP and XML/XSLT technology for rendering web pages. It is ideal for systems with limited resources, e.g. virtual servers or routers.

For small web application all daemons may run on the same machine and communicate over UNIX domain sockets. However, daemons can be run on remote machines or a cluster of remote machines, offering scalability and can be accessed over TCP/IP.

The Model

The model consists of the application logic daemon appd and the database access daemon dbproxyd. appd hosts a user-implemented set of SOAP functions representing the business logic of the web application. Through dbproxyd, the business logic accesses the database. Currently supported database systems include:

The View

The view is a set of XSLT files, that take results from business logic calls as well as static XML files as input and create the resulting HTML pages. XSLT can be extended with user-defined XPath functions.

The Controller

The controller is a CGI or Fast-CGI program that is programmed with XML configuration files. It is important to note that no C/C++ code has to be written for the controller part, it is entirely programmed by means of XML.

Supported Platforms

WAFPP targets primary the UNIX platform, however the code compiles and links with MS Visual C++ 2008, provided all required libraries are available. WAFPP has been excessively tested on Linux 32 and 64 bit platforms.

Required libraries

WAFPP requires the following products / libraries:

At least one of the following RDBMS systems:

Optional:

Example: Required packages for Debian Linux release "testing" (a.k.a. "squeeze")

  • Apache 2 install package apache2 2.2.15-5
  • Apache Fast-CGI module install package libapache2-mod-fcgid 1:2.3.5-2
  • gettext is already installed as part of the C library
  • Fast-CGI install package libfcgi-dev 2.4.0.8
  • Xalan-C install package libxalan110-dev 1.10-4
  • Xerces-C install package libxerces-c2-dev 2.8.0+deb1
  • MySQL install package libmysqlclient-dev 5.1.48-1
  • PostgreSQL install package libpq-dev 8.4.4-1+b1
  • SQLite install package sqlite3-dev 3.6.23.1-4
  • Doxygen install package doxygen 1.6.3-1