software framework that is designed to support the development of dynamic websites, web applications and web services. The framework aims to alleviate the overhead associated with common activities performed in Web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and they often promote code reuse
Why go with Application Service Framework (or related Content Management Systems)?
Consider the example of a real estate agent with 500 houses for sale. In a static web site, the agent would have to create 500 pages in order to make the information available. In a dynamic website, the agent would simply connect the dynamic page to a database table of 500 records.
Many frameworks follow the Model View Controller (MVC) architectural pattern to separate the data model with business rules from user interface. This is generally considered a good practice as it modularizes code, promotes code reuse, and allows multiple interfaces to be applied.
Push-based vs. Pull-based
PUSH These frameworks use actions that do the required processing, and then "push" the data to the view layer to render the results. Struts, Django, Ruby on Rails and Spring MVC are good examples of this architecture.
PULL An alternative to this is pull-based architecture, sometimes also called "component-based". These frameworks start with the view layer, which can then "pull" results from multiple controllers as needed. In this architecture, multiple controllers can be involved with a single view. Struts2, Lift, Tapestry, JBoss Seam, Wicket and Stripes are examples of pull-based architectures.
- language/system requirements (and your capabilities)
- support
- longevity
- latest update
- industry support and use
- databases support
Examples below taken from http://en.wikipedia.org/wiki/List_of_web_application_frameworks --look there for updates
Project | Current Stable Version | License |
---|---|---|
CakePHP | 1.3.6 | MIT |
CodeIgniter | 1.7.3 | BSD-style |
Drupal | 7.0 | GPL |
Horde | 3.3.9 | LGPL |
Joomla! | 1.5.22 | GPL |
Kohana | 3.0.9 | BSD |
Lithium | 0.9.9 | BSD |
Qcodo | 0.4.16 | MIT |
Seagull | 0.6.7 | BSD |
Symfony | 1.4.8 | MIT |
Yii | 1.1.5 | BSD |
Zend Framework | 1.11.0 | BSD |
Project | Current Stable Version | License |
Project | Current Stable Version | License |
---|---|---|
Apache Click | 2.2.0 | Apache |
Apache Cocoon | 2.2.0 | Apache |
Apache Struts | 2.1.8.1 | Apache |
Apache Wicket | 1.4.10 | Apache |
AppFuse | 2.0.2 | Apache |
Aranea | 1.0.10 | Apache |
Eclipse RAP | 1.2.0 | Eclipse Public License |
FormEngine | 1.7 | MIT |
Google Web Toolkit | 2.1.0 | Apache |
Hamlets | 1.6 | BSD |
IceFaces | 1.8.2 | Mozilla Public License 1.1 (MPL) |
ItsNat | 1.0 | AGPL / Proprietary |
JavaServer Faces | 2.0 | |
JBoss Seam | 2.2.0 GA | LGPL |
ManyDesigns Portofino | 3.1.0 | GPL v3 |
OpenLaszlo | 4.1 | Common Public License |
OpenXava | 4m5 | LGPL |
Play | 1.1 | Apache |
RIFE | 1.6.2 | Apache |
Shale | 1.0.4 | Apache |
Sling | 5 | Apache 2.0 |
SmartClient | LGPL | |
Spring | 3.0.0 | Apache |
Stripes | 1.5.4 | Apache |
Apache Tapestry | 5.2.4 | Apache |
ThinWire | 1.2 | GPL |
Vaadin | 6.4.8 | Apache |
Wavemaker | 6.1.10 | Apache |
WebObjects | 5.4.3 | Proprietary |
WebWork | 2.2.6 | Apache |
ZK | 5.0 | LGPL |
ztemplates | 0.9.9.6 | Apache |