Web application framework
Web Design & Development Guide
Web application framework
Home | Up | List of web application frameworks
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.[1]
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_python) 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 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.
Architectures
Model view controller
Many frameworks follow the Model View Controller (MVC) architectural pattern
to separate the data model, business rules and 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.[2]
Struts and Ruby on Rails 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.
Tapestry and JBoss Seam are examples of pull-based architectures.
Features
Security
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.
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
By automatically rewriting a url with parameters to a friendly URL, the
system becomes easier to use, and as an additional benefit, is better indexed by
search engines. An example would be the address ending in ?cat=1&pageid=3 to
/category/science/topic/physics or just /science/physics. When the id of the
category changes the url can stay the same (hence the advantage for search
engines). Rewriting URL's can help make an application better conform to some
elements of
RESTful design practices.
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 <c:out> 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.
Some frameworks will generate a basic, but fully-functional, application,
once the developer specifies the structure of the data, or it is discovered
through
introspection. In some frameworks, this scaffolding supports the create, read,
update and delete (CRUD) operations necessary to manipulate
data.
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 the web
template system.
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
- See also:
List of web application frameworks
Languages
Many languages have an associate 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.
ASP.NET
For Microsoft's ASP.NET platform there is the DotNetNuke web application
framework. Since ASP.NET itself is a technology designed for building web apps it's often wrongly
referred to as a web application framework.
PHP
PHP's original design for dynamic web pages has given support to projects
such as CakePHP, symfony, Zoop_Framework, the eZ publish web publishing
framework and the Zend Framework.
Perl, Python and Ruby
There are numerous dynamic language frameworks. Perl has Maypole and
Catalyst. Python has Django, TurboGears, pylons, Quixote, and Karrigell. Ruby
has Nitro and Ruby on Rails, a particularly well known framework.
Smalltalk
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.
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, that does not support the Mono runtime.
References
-
^
CGI: Common Gateway Interface.
-
^ Thomson, Kris (2003-10-29).
Clarification on MVC Pull and MVC Push.
See also
Home | Up | Online spreadsheets | Rich Internet Applications | Web application framework | e-Recruitment | Electronic business | Electronic commerce | Freight exchange | Mashup | Online banking | Online gambling | Online Office | Shop bot | Web application development | Web-based email
Web Design & Development Guide, made by MultiMedia | Websites for sale
This guide is licensed under the GNU
Free Documentation License. It uses material from the Wikipedia.
|