Architecture

PRADO is primarily a presentational framework, although it is not limited to be so. The framework focuses on making Web programming, which deals most of the time with user interactions, to be component-based and event-driven so that developers can be more productive. The following class tree depicts some of the major classes provided by PRADO:

When a PRADO application is processing a page request, its static object diagram can be shown as follows:

Once the main Application object gets created, it load the application configuration. The minimal configuration defines a set of basic modules to parse the Request, create a proper Response, mantain the user Session, handle any Error and publish the needed Assets (images, css, javascript, etc). These helpers module will be available from anywhere inside the application code.
Additionally, any 3rd-party or custom module can be loaded, and external Parameters can be loaded from external configurations.

Once the basic infrastructure has been set up, the Request module parses the request trying to identify the requested route. Different routes can be handled by different services, but the default route for http requests is the Page Service.
The Page Service's role is to instanciate the requested Page, run it, apply any defined Theme and grab the result in order to build the Response.

A Page can be a simple script (.php), a Template (.page), or both. PRADO uses a very powerful template engine where Controls can be instanciated directly.
A Control is an self-contained widget that fullfills a specific task; they can be a simple script (.php), a Template (.page), or both.