CS2020:   Web Science, Sytems and Design

Application Service Framework

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.

Model, View Controller Basis

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.

 

 

How do you choose - consider these items:

  • 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

 

Examples

PHP

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

[edit] Java

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

 

 

© Lynne Grewe