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 packageapache2 2.2.15-5
-
Apache Fast-CGI module
install packagelibapache2-mod-fcgid 1:2.3.5-2
-
gettext
is already installed as part of the C library -
Fast-CGI
install packagelibfcgi-dev 2.4.0.8
-
Xalan-C
install packagelibxalan110-dev 1.10-4
-
Xerces-C
install packagelibxerces-c2-dev 2.8.0+deb1
-
MySQL
install packagelibmysqlclient-dev 5.1.48-1
-
PostgreSQL
install packagelibpq-dev 8.4.4-1+b1
-
SQLite
install packagesqlite3-dev 3.6.23.1-4
-
Doxygen
install packagedoxygen 1.6.3-1