CppCMS is a MVC [web development framework](http://en.wikipedia.org/wiki/Web_application_framework). It is build to provide suitable tools for building high load web sites using C++. |
|
## Major Features: |
|
- Different web server APIs -- FastCGI, SCGI, CGI |
- Different working models: single thread, thread pool, prefork. |
- Nice URL mapping. |
- Powerful template system. |
- Cache framework including: in memory, in shared memory and distributed modes. |
- Easy Form processing and validation. |
- Easy form processing and validation. |
- Internationalization, including support of RTL languages. |
- Simple SQL access Library (not mandatory). |
- Simple configuration framework. |
- _In Progress:_ Transparent session support using different backends: encrypted cookies, files, cache, database, distributed and their various combination. |
|
## How CppCMS works |
|
Developer creates one or several application classes derived from `cppcms::application` that includes all |
business logic. It maps different application URLs to |
different classes or member functions that perform |
required operations. |
|
It writes web templates that include all the HTML/XML content of the application. They are usually compiled to |
shared objects that are loaded on demand. |
|
When CppCMS application starts, it creates a pool of threads or processes, each of them running an instance of the set of developer's application classes. It loads all templates, and starts receiving requests from the |
web server. |
|
After receiving a request, it is usually mapped to one of |
the member function of the given classes that responsible |
on it. |
|
It than checks if the page is cached. If it is not, the application uses database or cache to fetch the data required to create a content for the web page and renders it using templates system. |
|
The output is returned to user and probably cached for |
further use. |
|
|