Web application framework

A web application framework is a 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 used in Web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and often promote code reuse.

History

Common Gateway Interface

As the design of the World Wide Web was not inherently dynamic, early hypertext consisted of hand-coded HTML that was published on web servers. Any modifications to published pages needed to be performed by the pages' author. To provide a dynamic web page that reflected user inputs, the Common Gateway Interface (CGI) standard was introduced for interfacing external applications with web servers. [cite web
title = CGI: Common Gateway Interface
url=http://hoohoo.ncsa.uiuc.edu/cgi/intro.html
accessdate = 2007-07-29
] CGI could adversely affect server load, though, since each request had to start a separate process.

Tighter integration

Programmers wanted tighter integration with the web server to enable high traffic web applications. The Apache HTTP Server, for example, supports modules that can extend the web server with arbitrary code executions (such as mod perl) or forward specific requests to a web server that can handle dynamic content (such as mod jk). Some web servers (such as Apache Tomcat) were specifically designed to handle dynamic content by executing code written in some languages, such as Java.

Web languages

Around the same time, new languages were being developed specifically for use in the web, such as ColdFusion, PHP and Active Server Pages.

Web libraries

While the vast majority of languages available to programmers to use in creating dynamic web pages have libraries to help with common tasks, web applications often require specific libraries that are useful in web applications, such as creating HTML (for example, JavaServer Faces).

Full Stack

Eventually, mature, "full stack" frameworks appeared, that often gathered multiple libraries useful for web development into a single cohesive software stack for web developers to use. Examples of this include JavaEE, WebObjects, OpenACS, and Ruby on Rails.

Architectures

Model view controller

Many frameworks follow the Model View Controller (MVC) architectural pattern to separate the data model with business rules from user interface.

Push-based vs. Pull-based

Most MVC frameworks follow a push-based architecture. These frameworks use actions that do the required processing, and then "push" the data to the view layer to render the results. [cite web
last = Thomson
first = Kris
title = Clarification on MVC Pull and MVC Push
url=http://www.theserverside.com/patterns/thread.tss?thread_id=22143
date = 2003-10-29
accessdate = 2007-07-29
] Struts, Django, Ruby on Rails and Spring MVC are good examples of this architecture. 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, Tapestry, JBoss Seam, Wicket and Velocity are examples of pull-based architectures.

Content Management Systems

Some self-described content management systems have begun to expand into higher layer web application frameworks. For instance, Drupal's structure provides a minimal "core" whose function is extended through "modules" that provide functions generally associated with web application frameworks. Joomla, XOOPS, Plone and TYPO3 have similar functionality. Historically these projects have been termed content management systems. However, it is debatable whether "management of content" is the primary value of such systems, especially when some, like SilverStripe, provide an object-oriented MVC framework. Add-on "modules" now enable these systems to function as full fledged applications beyond the scope of content management. They may provide functional APIs, functional frameworks, coding standards, and many of the functions traditionally associated with "Web application frameworks".

Features

ecurity

Some web application frameworks come with authentication and authorization frameworks, that enable the web server to identify the users of the application, and restrict access to functions based on some defined criteria. Django is one example that provides role-based access to pages, and provides a web-based interface for creating users and assigning them roles.

Database access and mapping

Many web application frameworks create a unified API to a database backend, enabling web applications to work with a variety of databases with no code changes, and allowing programmers to work with higher-level concepts. For higher performance, database connections should be pooled as e.g. AOLserver does. Additionally, some object-oriented frameworks contain mapping tools to provide Object-Relational Mapping, which will map objects to tuples.

Other features web application frameworks may provide include transactional support and database migration tools.

URL mapping

A framework's URL mapping facility is the mechanism by which the framework interprets URLs. Some frameworks, such as Django, match the provided URL against pre-determined patterns using regular expressions, while some others use URL Rewriting to translate the provided URL into one that the underlying engine will recognize.

A URL mapping system that uses pattern matching or URL rewriting allows more "friendly" URLs to be used, increasing the simplicity of the site and allowing for better indexing by search engines. For example, a URL that ends with "/page.cgi?cat=science&topic=physics" could be changed to simply "/page/science/physics". This makes the URL easier to read and provides search engines with better information about the structural layout of the site.

Web template system

Dynamic web pages usually consist of a static part (HTML) and a dynamic part, which is code that generates HTML. The code that generates the HTML can do this based on variables in a template, or on code. The text to be generated can come from a database, thereby making it possible to dramatically reduce the number of pages in a site.

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.

In a template, variables from the programming language can be inserted without using code, thereby losing the requirement of programming knowledge to make updates to the pages in a web site. A syntax is made available to distinguish between HTML and variables. E.g. in JSP the tag is used to output variables, and in Smarty, {$variable} is used.

Many template engines do support limited logic tags, like IF and FOREACH. These are to be used only for decisions that need to be made for the presentation layer, in order to keep a clean separation from the business logic layer, or the M(odel) in the MVC pattern.

Caching

Web caching is the caching of web documents in order to reduce bandwidth usage, server load, and perceived "lag". A web cache stores copies of documents passing through it; subsequent requests may be satisfied from the cache if certain conditions are met. Some application frameworks provide mechanisms for caching documents and bypassing various stages of the page's preparation, such as database access or template interpretation.

Ajax

Ajax, shorthand for "Asynchronous JavaScript and XML", is a web development technique for creating interactive web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user requests a change. This is intended to increase the web page's interactivity, speed, and usability.

Due to complexity of Ajax programming, there are numerous Ajax frameworks that exclusively deal with Ajax support. Some Ajax frameworks are even embedded as a part of larger frameworks. For example, the Prototype JavaScript Framework is included in Ruby on Rails.

Automatic configuration

Some frameworks minimize web application configuration through the use of introspection and/or following known conventions. For example, many Java frameworks use Hibernate as a persistence layer, which can generate a database schema at runtime capable of persisting the necessary information. This allows the application designer to design business objects without needing to explicitly define a database schema. Frameworks such as Ruby on Rails can also work in reverse, that is, define properties of model objects at runtime based on a database schema.

Web services

Some frameworks provide tools for creating and providing web services. These utilities may offer similar tools as the rest of the web application.

Technologies

Languages

Many languages have an associated web application framework. However, certain languages either have a critical mass of developers to give a higher level of support to frameworks, or provide features that prove conducive to the development of web application frameworks

Java

There are numerous Java frameworks either in development or in use. Many of these frameworks are built on top of, or borrow elements from the Java EE platform or Eclipse etc.

C# and VB.NET

C# and VB.NET are the most popular languages on Microsoft's ASP.NET platform. One of the most popular web application frameworks early on was the DotNetNuke web application framework. Since ASP.NET itself is a technology designed for building web applications, it is often wrongly referred to as only a web application framework. This is a reduced view of ASP.NET; besides all of the essential web application framework features, you can choose your favourite language of .NET Languages. ASP.NET also has an integrated AJAX framework, ASP.NET AJAX.

Coldfusion

Coldfusion has Model-Glue, Fusebox, cfwheels

PHP

PHP's original design for dynamic web pages has given support to projects such as CakePHP, CodeIgniter, PRADO, ThinkPHP,Qcodo, symfony, Zoop Framework, the eZ publish web publishing framework and the Zend Framework. These frameworks assist application structure and modeling by providing a framework layer on top of the core language. These attack the programming problem from the "bottom-up." [ [http://www.youtube.com/watch?v=EQ2vLdFTaT0 Interview with SilverStripe co-founder at Googleplex] ]

In contrast with the mentioned frameworks, software projects like Drupal, Joomla, MODx, or TYPO3 have begun to morph from web content management systems to a higher layer web application framework. Their structure generally provides a minimal "core" whose function is extended through "modules" that provide functions generally associated with web application frameworks. SilverStripe began life as both a framework and CMS rather than starting with one and going to the other. As open source projects, their communities contribute many modules (for example, Drupal has over 2,000 such "modules" and Typo3 more than 2,500). Use of these CMS's core+modules constitutes a method for assembling a website with a broad range of application features without actually doing any PHP-level coding.

Perl, Python and Ruby

There are numerous dynamic language frameworks:

* Perl has Catalyst, Maypole, Jifty, CGI::Application, and WebGUI, amongst others. [cite web
url = http://www.perlfoundation.org/perl5/index.cgi?web_frameworks
title = Web Frameworks
publisher = Perl Foundation
author = Multiple (Wiki)
date = 2007-07-26
accessdate = 2008-07-11
]

* Python has, for example, Django, TurboGears, pylons, Zope, Quixote, Karrigell and [http://mdp.cti.depaul.edu web2py] . There are many other options available as well. [cite web
url = http://wiki.python.org/moin/WebFrameworks
title = Web Frameworks for Python
author = Multiple (Wiki)
accessdate = 2008-07-11
]

* Ruby has prominent Ruby on Rails.

Common Lisp

There are a number of web application frameworks written in Common Lisp, including UnCommon Web, BKNR, ABCL-web and blow.

TCL

OpenACS is an open source web application framework designed for developing high traffic web applications in Tcl.

malltalk

Seaside is an open source web application framework for developing web applications in Smalltalk. Although the main development of Seaside happens in Squeak there exist ports for other Smalltalk dialects.

AIDA/Web is another open source web framework and application server based on many open source and commercial dialects of Smalltalk.

JavaScript

Helma is an open source web application framework / publishing system written in Java which uses JavaScript as programming language.

Operating Systems

With very few exceptions, web application frameworks are based upon platform independent languages that run on a variety of platforms. While some frameworks may recommend particular configurations, most can run on Windows, Linux, Mac and other Unix-based platforms. A notable exception is DotNetNuke, written for the .NET Framework, which does not support the Mono runtime.

References

* Tony Shan and Winnie Hua (2006). [http://doi.ieeecomputersociety.org/10.1109/ICEBE.2006.98 "Taxonomy of Java Web Application Frameworks"] . Proceedings of the 2006 IEEE International Conference on e-Business Engineering (ICEBE 2006), October 2006, p378-385.

ee also

*Application framework
* Application security
*Comparison of web application frameworks
*Don't repeat yourself (DRY)
*List of web application frameworks
*List of Web service Frameworks
*Rich Internet Application
*Software framework
*Solution stack
*JavaScript library


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Web Application Framework — Ein Web Application Framework oder Webframework ist ein Software Framework, das für die Entwicklung von dynamischen Webseiten oder Webanwendungen ausgelegt ist. Damit werden sich wiederholende Tätigkeiten vereinfacht, die Wiederverwendung von… …   Deutsch Wikipedia

  • Web application development — is the process and practice of developing web applications Fact|date=February 2007.RiskJust as with a traditional desktop application, web applications have varying levels of risk. A personal home page is much less risky than, for example, a… …   Wikipedia

  • Web application — For applications accessed through the web that are executed client side, see Rich Internet application. Google Calendar is a contact and time management web application offered by Google …   Wikipedia

  • Web application — Application Web En informatique une application web (aussi appelée site web dynamique) est un logiciel applicatif dont l interface homme machine imite un site web. L interface homme machine est appelée interface web. Une application web se… …   Wikipédia en Français

  • Web Application Structure for PHP — aka WASP is a free package or framework of software running with PHP version 5 that allows developers to code systems in a more traditional enterprise three tier model (like Web Logic Server aka WLS) rather than PHP s more usual script style,… …   Wikipedia

  • Web Application Server — Ein Anwendungsserver (engl. application server) [ˌæplɪˈkeɪʃn̩ ˈsɝːvɚ] ist im Allgemeinen ein Server in einem Computernetzwerk, auf dem Anwendungsprogramme (applications) ausgeführt werden. Im engeren Sinne bezeichnet der Begriff Application… …   Deutsch Wikipedia

  • Mozilla application framework — Free software portal The Mozilla application framework is a collection of cross platform software components that make up the Mozilla applications. It was originally known as XPFE, an abbreviation of cross platform front end. It was also known as …   Wikipedia

  • Oracle Application Framework — Contents 1 Introduction 1.1 Self Service Purpose 1.2 Architecture 1.3 Framework Structure 1.3.1 …   Wikipedia

  • Numina Application Framework — Developer(s) Numina Solutions LLC Stable release 3.0 / January 1, 2011; 9 months ago (2011 01 01) Written in C# …   Wikipedia

  • Mozilla application framework — Plateforme Mozilla La plateforme Mozilla (XPFE ou XPToolkit ou Mozilla application framework) est l ensemble des techniques Mozilla. Cela inclut le moteur de rendu Gecko, XUL, XHTML, SVG, le moteur javascript, le toolkit et toutes les API… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.