Web application framework
Encyclopedia
A web application framework is a software framework
that is designed to support the development
of dynamic website
s, web application
s and web service
s. 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
.
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.
CGI could adversely affect server load, though, since each request had to start a separate process
.
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
.
Around the same time, new languages were being developed specifically for use in the web, such as ColdFusion
, PHP
and Active Server Pages
.
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
).
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 ASP.NET
, JavaEE
(Servlets), WebObjects
, web2py
, OpenACS
, Catalyst
, Ruby on Rails
, Django, Zend Framework
and Symfony
.
.
to separate the data model
with business rules from the user interface
. This is generally considered a good practice as it modularizes code, promotes code reuse
, and allows multiple interfaces to be applied. In Web applications, this permits different views to be presented, such as web pages
for humans, and web service
interfaces for remote applications.
, Symfony
, Yii
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. Play
, Struts2, Lift
, Tapestry
, JBoss Seam
, Wicket and Stripes
are examples of pull-based architectures.
, applications are structured around three physical tiers: client, application, and database. The database is normally a RDBMS
. The Application contains the business logic, running on a server and communicates with the client using HTTP. The client, on web applications is a web browser that runs HTML generated by the application layer. The term must not be confused with MVC. Unlike in three-tier architecture, it is considered a good practice to keep business logic away from the controller, the "middle layer" in MVC.
s have begun to take on the roles of 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. The Joomla Platform provides a set of APIs to build Web and Command Line applications. 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.
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 web pages in order to make the information available. In a dynamic website, the agent could potentially connect a single dynamic web 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.
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.
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. Drupal
is one example that provides role-based access to pages, and provides a web-based interface for creating users and assigning them roles.
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
.
mapping facility is the mechanism by which the framework interprets URLs. Some frameworks, such as Drupal
and Django, match the provided URL against pre-determined patterns using regular expression
s, while some others use URL Rewriting
to translate the provided URL into one that the underlying engine will recognize. Another technique is that of graph traversal such as used by Zope
, where a URL is decomposed in steps that traverse an object graph (of models and views).
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. A graph traversal approach also tends to result in the creation of friendly URLs. A shorter URL such as "/page/science" tends to exist by default as that is simply a shorter form of the longer traversal to "/page/science/physics".
, shorthand for "Asynchronous
JavaScript
and XML
", is a web development
technique for creating interactive web application
s. 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 the complexity of Ajax programming in Javascript, there are numerous Ajax framework
s 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
.
With the increased interest in developing "Web 2.0" Rich Media Applications, the complexity of programming directly in Ajax and Javascript has become so apparent that compiler technology has stepped in, to allow developers to code in high-level languages such as Java, Python and Ruby. The first of these compilers was Morfik
followed by Google Web Toolkit
, with ports to Python and Ruby in the form of Pyjamas
and RubyJS
following some time after. These compilers and their associated widget set libraries make the development of Rich Media Ajax Applications much more akin to that of developing Desktop applications.
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.
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
that is designed to support the development
Web development
Web development is a broad term for the work involved in developing a web site for the Internet or an intranet . This can include web design, web content development, client liaison, client-side/server-side scripting, web server and network security configuration, and e-commerce development...
of dynamic website
Dynamic web page
A dynamic web page is a kind of web page that has been prepared with fresh information , for each individual viewing. It is not static because it changes with the time , the user , the user interaction , the context A dynamic web page is a kind of web page that has been prepared with fresh...
s, web application
Web application
A web application is an application that is accessed over a network such as the Internet or an intranet. The term may also mean a computer software application that is coded in a browser-supported language and reliant on a common web browser to render the application executable.Web applications are...
s and web service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...
s. The framework aims to alleviate the overhead associated with common activities performed in Web development. For example, many frameworks provide libraries for database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...
access, templating
Template processor
A template processor is software or a software component that is designed to combine one or moretemplates with a data model to produceone or more result documents...
frameworks and session
Session (computer science)
In computer science, in particular networking, a session is a semi-permanent interactive information interchange, also known as a dialogue, a conversation or a meeting, between two or more communicating devices, or between a computer and user . A session is set up or established at a certain point...
management, and they often promote code reuse
Code reuse
Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software.-Overview:Ad hoc code reuse has been practiced from the earliest days of programming. Programmers have always reused sections of code, templates, functions, and procedures...
.
History
As the design of the World Wide WebWorld Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...
was not inherently dynamic, early hypertext
Hypertext
Hypertext is text displayed on a computer or other electronic device with references to other text that the reader can immediately access, usually by a mouse click or keypress sequence. Apart from running text, hypertext may contain tables, images and other presentational devices. Hypertext is the...
consisted of hand-coded HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....
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
Dynamic web page
A dynamic web page is a kind of web page that has been prepared with fresh information , for each individual viewing. It is not static because it changes with the time , the user , the user interaction , the context A dynamic web page is a kind of web page that has been prepared with fresh...
that reflected user inputs, the Common Gateway Interface
Common Gateway Interface
The Common Gateway Interface is a standard method for web servers software to delegate the generation of web pages to executable files...
(CGI) standard was introduced for interfacing external applications with web servers.
CGI could adversely affect server load, though, since each request had to start a separate process
Process (computing)
In computing, a process is an instance of a computer program that is being executed. It contains the program code and its current activity. Depending on the operating system , a process may be made up of multiple threads of execution that execute instructions concurrently.A computer program is a...
.
Programmers wanted tighter integration with the web server to enable high traffic web applications. The Apache HTTP Server
Apache HTTP Server
The Apache HTTP Server, commonly referred to as Apache , is web server software notable for playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web server software to surpass the 100 million website milestone...
, for example, supports modules that can extend the web server with arbitrary code executions (such as mod perl
Mod perl
mod_perl is an optional module for the Apache HTTP server. It embeds a Perl interpreter into the Apache server, so that dynamic content produced by Perl scripts can be served in response to incoming requests, without the significant overhead of re-launching the Perl interpreter for each request...
) or forward specific requests to a web server that can handle dynamic content (such as mod jk
Mod jk
mod_jk is the connector used to connect the Tomcat servlet container with web servers such as Apache, Netscape, iPlanet, SunOne and even IIS using the AJP protocol.In a nutshell, a web server is waiting for client HTTP requests...
). Some web servers (such as Apache Tomcat
Apache Tomcat
Apache Tomcat is an open source web server and servlet container developed by the Apache Software Foundation...
) were specifically designed to handle dynamic content by executing code written in some languages, such as Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
.
Around the same time, new languages were being developed specifically for use in the web, such as ColdFusion
ColdFusion
In computing, ColdFusion is the name of a commercial rapid application development platform invented by Jeremy and JJ Allaire in 1995. ColdFusion was originally designed to make it easier to connect simple HTML pages to a database, by version 2 it had...
, PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...
and Active Server Pages
Active Server Pages
Active Server Pages , also known as Classic ASP or ASP Classic, was Microsoft's first server-side script engine for dynamically-generated Web pages. Initially released as an add-on to Internet Information Services via the Windows NT 4.0 Option Pack Active Server Pages (ASP), also known as Classic...
.
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
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....
(for example, JavaServer Faces
JavaServer Faces
JavaServer Faces is a Java-based Web application framework intended to simplify development integration of web-based user interfaces....
).
Eventually, mature, "full stack" frameworks appeared, that often gathered multiple libraries useful for web development
Web development
Web development is a broad term for the work involved in developing a web site for the Internet or an intranet . This can include web design, web content development, client liaison, client-side/server-side scripting, web server and network security configuration, and e-commerce development...
into a single cohesive software stack for web developers to use. Examples of this include ASP.NET
ASP.NET
ASP.NET is a Web application framework developed and marketed by Microsoft to allow programmers to build dynamic Web sites, Web applications and Web services. It was first released in January 2002 with version 1.0 of the .NET Framework, and is the successor to Microsoft's Active Server Pages ...
, JavaEE
Java Platform, Enterprise Edition
Java Platform, Enterprise Edition or Java EE is widely used platform for server programming in the Java programming language. The Java platform differs from the Java Standard Edition Platform in that it adds libraries which provide functionality to deploy fault-tolerant, distributed, multi-tier...
(Servlets), WebObjects
WebObjects
WebObjects was a Java web application server from Apple Inc., and a web application framework that ran on the server. It was available at no additional cost. Its hallmark features were its object-orientation, database connectivity, and prototyping tools...
, web2py
Web2py
Web2py is an open source web application framework. Web2py is written in the Python language and is programmable in Python. Since web2py was originally designed as a teaching tool with emphasis on ease of use and deployment, it does not have any project-level configuration files. Web2py was...
, OpenACS
OpenACS
The Open Architecture Community System is an open-source web application framework licensed under the terms of the GNU GPL.The Open Architecture Community System provides:...
, Catalyst
Catalyst (software)
Catalyst is an open source web application framework written in Perl, that closely follows the model–view–controller architecture, and supports a number of experimental web patterns. It is written using Moose, a modern object system for Perl...
, Ruby on Rails
Ruby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...
, Django, Zend Framework
Zend Framework
Zend Framework is an open source, object-oriented web application framework implemented in PHP 5 and licensed under the New BSD License.-Licensing:...
and Symfony
Symfony
Symfony is a web application framework written in PHP which follows the model-view-controller paradigm. Released under the MIT license, Symfony is free software...
.
Architectures
Most web application frameworks are based on the model–view–controller (MVC) architectural patternArchitectural pattern (computer science)
An architectural pattern in software is a standard design in the field of software architecture. The concept of a software architectural pattern has a broader scope than the concept of a software design pattern...
.
The Model–view–controller (MVC) Architecture
Many frameworks follow the model–view–controller (MVC) architectural patternArchitectural pattern (computer science)
An architectural pattern in software is a standard design in the field of software architecture. The concept of a software architectural pattern has a broader scope than the concept of a software design pattern...
to separate the data model
Data model
A data model in software engineering is an abstract model, that documents and organizes the business data for communication between team members and is used as a plan for developing applications, specifically how data is stored and accessed....
with business rules from the user interface
User interface
The user interface, in the industrial design field of human–machine interaction, is the space where interaction between humans and machines occurs. The goal of interaction between a human and a machine at the user interface is effective operation and control of the machine, and feedback from the...
. This is generally considered a good practice as it modularizes code, promotes code reuse
Code reuse
Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software.-Overview:Ad hoc code reuse has been practiced from the earliest days of programming. Programmers have always reused sections of code, templates, functions, and procedures...
, and allows multiple interfaces to be applied. In Web applications, this permits different views to be presented, such as web pages
Web page
A web page or webpage is a document or information resource that is suitable for the World Wide Web and can be accessed through a web browser and displayed on a monitor or mobile device. This information is usually in HTML or XHTML format, and may provide navigation to other web pages via hypertext...
for humans, and web service
Web service
A Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...
interfaces for remote applications.
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. Struts, Django, Ruby on RailsRuby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...
, Symfony
Symfony
Symfony is a web application framework written in PHP which follows the model-view-controller paradigm. Released under the MIT license, Symfony is free software...
, Yii
Yii
Yii is an open source, object-oriented, high-performance component-based PHP web application framework. Yii is pronounced as "Yee" or [ji:] and it's an acronym for "Yes It Is!".- History :...
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. Play
Play Framework
Play is an open source web application framework, written in Java, which follows the model-view-controller architectural pattern. It aims to optimize developer productivity by using convention over configuration, hot code reloading and display of errors in the browser.Although Play is written in...
, Struts2, Lift
Lift (web framework)
Lift is a free web application framework that is designed for the Scala programming language. It was originally created by who was dissatisfied with certain aspects of the Ruby on Rails framework. Lift was launched as an open-source project on February 26, 2007 under the Apache 2.0 license...
, Tapestry
Tapestry (programming)
Apache Tapestry is an open-source component-oriented Java web application framework to implement applications in accordance with the model-view-controller architectural pattern. Tapestry was created by Howard Lewis Ship independently, and was adopted by the Apache Software Foundation as a top-level...
, JBoss Seam
JBoss Seam
Seam is a web application framework developed by JBoss, a division of Red Hat.- Seam 3 :Seam 3 is very active project consisting of over 50 developers and engineers, which provides a modular set of extensions to the CDI programming model...
, Wicket and Stripes
Stripes (framework)
-External links:********...
are examples of pull-based architectures.
Three-Tier Architecture
In Three Tier ArchitectureMultitier architecture
In software engineering, multi-tier architecture is a client–server architecture in which the presentation, the application processing, and the data management are logically separate processes. For example, an application that uses middleware to service data requests between a user and a database...
, applications are structured around three physical tiers: client, application, and database. The database is normally a RDBMS
Relational database management system
A relational database management system is a database management system that is based on the relational model as introduced by E. F. Codd. Most popular databases currently in use are based on the relational database model....
. The Application contains the business logic, running on a server and communicates with the client using HTTP. The client, on web applications is a web browser that runs HTML generated by the application layer. The term must not be confused with MVC. Unlike in three-tier architecture, it is considered a good practice to keep business logic away from the controller, the "middle layer" in MVC.
Content Management Systems
Some projects that have historically been termed content management systemContent management system
A content management system is a system providing a collection of procedures used to manage work flow in a collaborative environment. These procedures can be manual or computer-based...
s have begun to take on the roles of higher-layer web application frameworks. For instance, Drupal
Drupal
Drupal is a free and open-source content management system and content management framework written in PHP and distributed under the GNU General Public License. It is used as a back-end system for at least 1.5% of all websites worldwide ranging from personal blogs to corporate, political, and...
's structure provides a minimal core whose function is extended through modules that provide functions generally associated with web application frameworks. The Joomla Platform provides a set of APIs to build Web and Command Line applications. However, it is debatable whether "management of content" is the primary value of such systems, especially when some, like SilverStripe
SilverStripe
SilverStripe is a free and open source content management system for creating and maintaining websites. It provides an out of the box web-based administration panel that enables users to make modifications to parts of the website, which includes a WYSIWYG website editor...
, 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.
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 web pages in order to make the information available. In a dynamic website, the agent could potentially connect a single dynamic web page to a database table of 500 records.
In a template
Web template
A web template is a tool used to separate content from presentation in web design, and for mass-production of web documents. It is a basic component of a web template system.Web templates can be used to set up any type of website...
, 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
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...
the
Smarty
Smarty is a web template system written in PHP. Smarty is primarily promoted as a tool for separation of concerns.Smarty is intended to simplify compartmentalization, allowing the presentation of a web page to change separately from the back-end...
, {$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 cachingWeb cache
A web cache is a mechanism for the temporary storage of web documents, such as HTML pages and images, to reduce bandwidth usage, server load, and perceived lag...
of web
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...
documents
Electronic document
An electronic document is any electronic media content that are intended to be used in either an electronic form or as printed output....
in order to reduce bandwidth
Bandwidth (computing)
In computer networking and computer science, bandwidth, network bandwidth, data bandwidth, or digital bandwidth is a measure of available or consumed data communication resources expressed in bits/second or multiples of it .Note that in textbooks on wireless communications, modem data transmission,...
usage, server
Web server
Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....
load, and perceived "lag
Lag
Lag is a common word meaning to fail to keep up or to fall behind. In real-time applications, the term is used when the application fails to respond in a timely fashion to inputs...
". 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.
Security
Some web application frameworks come with authenticationAuthentication
Authentication is the act of confirming the truth of an attribute of a datum or entity...
and authorization
Authorization
Authorization is the function of specifying access rights to resources, which is related to information security and computer security in general and to access control in particular. More formally, "to authorize" is to define access policy...
frameworks, that enable the web server
Web server
Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....
to identify the users of the application, and restrict access to functions based on some defined criteria. Drupal
Drupal
Drupal is a free and open-source content management system and content management framework written in PHP and distributed under the GNU General Public License. It is used as a back-end system for at least 1.5% of all websites worldwide ranging from personal blogs to corporate, political, and...
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. AOLserverAOLserver
AOLserver is America Online's open source web server. AOLserver ismultithreaded, Tcl-enabled, and used for large scale, dynamic web sites.AOLserver is distributed under the Mozilla Public License....
does. Additionally, some object-oriented
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
frameworks contain mapping tools to provide Object-Relational Mapping
Object-relational mapping
Object-relational mapping in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language...
, which will map objects
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...
to tuples
Relational model
The relational model for database management is a database model based on first-order predicate logic, first formulated and proposed in 1969 by Edgar F...
.
Other features web application frameworks may provide include transactional support
Database transaction
A transaction comprises a unit of work performed within a database management system against a database, and treated in a coherent and reliable way independent of other transactions...
and database migration tools
Data migration
Data migration is the process of transferring data between storage types, formats, or computer systems. Data migration is usually performed programmatically to achieve an automated migration, freeing up human resources from tedious tasks...
.
URL mapping
A framework's URLUniform Resource Locator
In computing, a uniform resource locator or universal resource locator is a specific character string that constitutes a reference to an Internet resource....
mapping facility is the mechanism by which the framework interprets URLs. Some frameworks, such as Drupal
Drupal
Drupal is a free and open-source content management system and content management framework written in PHP and distributed under the GNU General Public License. It is used as a back-end system for at least 1.5% of all websites worldwide ranging from personal blogs to corporate, political, and...
and Django, match the provided URL against pre-determined patterns using regular expression
Regular expression
In computing, a regular expression provides a concise and flexible means for "matching" strings of text, such as particular characters, words, or patterns of characters. Abbreviations for "regular expression" include "regex" and "regexp"...
s, while some others use URL Rewriting
Rewrite engine
A rewrite engine is software that modifies a web URL's appearance . Rewritten URLs are used to provide shorter and more relevant-looking links to web pages...
to translate the provided URL into one that the underlying engine will recognize. Another technique is that of graph traversal such as used by Zope
Zope
Zope is a free and open-source, object-oriented Web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web...
, where a URL is decomposed in steps that traverse an object graph (of models and views).
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. A graph traversal approach also tends to result in the creation of friendly URLs. A shorter URL such as "/page/science" tends to exist by default as that is simply a shorter form of the longer traversal to "/page/science/physics".
Ajax
AjaxAjax (programming)
Ajax is a group of interrelated web development methods used on the client-side to create asynchronous web applications...
, shorthand for "Asynchronous
Asynchrony
Asynchrony, in the general meaning, is the state of not being synchronized.* Asynchronous learning* Collaborative editing systemsIn specific terms of digital logic and physical layer of communication, an asynchronous process does not require a clock signal, in contrast with synchronous and...
JavaScript
JavaScript
JavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
and XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
", is a web development
Web development
Web development is a broad term for the work involved in developing a web site for the Internet or an intranet . This can include web design, web content development, client liaison, client-side/server-side scripting, web server and network security configuration, and e-commerce development...
technique for creating interactive web application
Web application
A web application is an application that is accessed over a network such as the Internet or an intranet. The term may also mean a computer software application that is coded in a browser-supported language and reliant on a common web browser to render the application executable.Web applications are...
s. 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
Usability
Usability is the ease of use and learnability of a human-made object. The object of use can be a software application, website, book, tool, machine, process, or anything a human interacts with. A usability study may be conducted as a primary job function by a usability analyst or as a secondary job...
.
Due to the complexity of Ajax programming in Javascript, there are numerous Ajax framework
Ajax framework
In web application development, an Ajax framework is a framework which leverages Ajax, a collection of technologies for building dynamic web pages on the client side...
s that exclusively deal with Ajax support. Some Ajax frameworks are even embedded as a part of larger frameworks. For example, the Prototype JavaScript Framework
Prototype Javascript Framework
The Prototype JavaScript Framework is a JavaScript framework created by Sam Stephenson in February 2005 as part of the foundation for Ajax support in Ruby on Rails. It is implemented as a single file of JavaScript code, usually named prototype.js...
is included in Ruby on Rails
Ruby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...
.
With the increased interest in developing "Web 2.0" Rich Media Applications, the complexity of programming directly in Ajax and Javascript has become so apparent that compiler technology has stepped in, to allow developers to code in high-level languages such as Java, Python and Ruby. The first of these compilers was Morfik
Morfik
Morfik Technology Pty Ltd., an Australian company, is the developer of Morfik, a set of visual designers, compilers and a Framework combined in an Integrated development environment aimed at developing Ajax applications in a high-level language such as Java, C#, BASIC or Object Pascal. Morfik...
followed by Google Web Toolkit
Google Web Toolkit
Google Web Toolkit is an open source set of tools that allows web developers to create and maintain complex JavaScript front-end applications in Java. Other than a few native libraries, everything is Java source that can be built on any supported platform with the included GWT Ant build files...
, with ports to Python and Ruby in the form of Pyjamas
Pyjamas (software)
Pyjamas is a tool and framework for developing Ajax applications in Python. It contains a stand-alone Python-to-JavaScript compiler, an Ajax framework and widget toolkit, and through use of these components, developers can write comprehensive applications, to run in all major web browsers, without...
and RubyJS
RubyJS
RubyJS is a port of Google Web Toolkit to the Ruby programming language. RubyJS compiles Ruby source code to JavaScript, which allows running client-side applications in a web browser....
following some time after. These compilers and their associated widget set libraries make the development of Rich Media Ajax Applications much more akin to that of developing Desktop applications.
Automatic configuration
Some frameworks minimize web application configuration through the use of introspection and/or following known conventions. For example, many Java frameworks use HibernateHibernate (Java)
Hibernate is an object-relational mapping library for the Java language, providing a framework for mapping an object-oriented domain model to a traditional relational database...
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
Ruby on Rails
Ruby on Rails, often shortened to Rails or RoR, is an open source web application framework for the Ruby programming language.-History:...
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.See also
- Application frameworkApplication frameworkIn computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of an application for a specific development environment ....
- Application securityApplication securityApplication security encompasses measures taken throughout the application's life-cycle to prevent exceptions in the security policy of an application or the underlying system through flaws in the design, development, deployment, upgrade, or maintenance of the application.Applications only...
- Comparison of web application frameworksComparison of web application frameworksThis is a comparison of notable web application frameworks.-Perl:-PHP:-Java:-Python:-Ruby:-CFML :-ASP.NET:-Other:-ASP.NET:-C++:-CFML:-Python:-Java:-PHP:-Ruby:-Others:...
- Don't repeat yourselfDon't repeat yourselfIn software engineering, Don't Repeat Yourself is a principle of software development aimed at reducing repetition of information of all kinds, especially useful in multi-tier architectures...
(DRY) - List of Web service Frameworks
- Rich Internet ApplicationRich Internet applicationA Rich Internet Application is a Web application that has many of the characteristics of desktop application software, typically delivered either by way of a site-specific browser, via a browser plug-in, independent sandboxes, extensive use of JavaScript, or virtual machines...
- Software frameworkSoftware frameworkIn computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
- Solution stackSolution stackIn computing, a solution stack is a set of software subsystems or components needed to deliver a fully functional solution, e.g. a product or service....
- JavaScript libraryJavaScript libraryA JavaScript library is a library of pre-written JavaScript which allows for easier development of JavaScript-based applications, especially for AJAX and other web-centric technologies....
- JavaServer PagesJavaServer PagesJavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...
- JDHTMLJDHTMLJava Dynamic HTML is a web framework that uses XML actions embedded in HTML pages to dynamically create a web page.The framework was developed by Rio Software and Technologies Ltd as an inhouse development...
(Java Dynamic HTML)