本科生毕业设计(论文)
第 1页
附录 A 英文原文
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 performed in Web development.
For example, many frameworks provide libraries for database access, templating frameworks
and session management, and they often promote code reuse.[1]
History
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.[2] 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.
本科生毕业设计(论文)
第 2页
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 JavaEE (Servlets), WebObjects, OpenACS, Ruby on Rails,
Django, and Zend Framework.
Architectures
Model view controller (MVC)
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
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.[3] 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 Stripes are examples
of pull-based architectures.
Content Management Systems
本科生毕业设计(论文)
第 3页
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. 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
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. 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.
本科生毕业设计(论文)
第 4页
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. 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).
by
a
URL
that
ends
For
search
engines.
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
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".
example,
Web template system
Main article: 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
本科生毕业设计(论文)
第 5页
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
Main article: Web cache
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
Main article: Ajax framework
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.
本科生毕业设计(论文)
第 6页
Due to the complexity of Ajax programming in Javascript, 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.
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 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.
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
Main article: 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
本科生毕业设计(论文)
第 7页
See also: List of web application frameworks
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.
As an alternative to Java language frameworks, there is Grails (previously known as
Groovy on Rails) — Groovy framework, built on top of Java Platform.
C# and VB.NET
C# and VB.NET are the most popular languages used to create web applications using
Microsoft's ASP.NET platform. (ASP.NET is built on the Common Language Runtime,
allowing programmers to use any supported .NET language.) ASP.NET has an integrated
AJAX framework, ASP.NET AJAX.
ColdFusion
ColdFusion has several active frameworks, including:
Perl
Perl has many web application frameworks available of which the most prominent are
Catalyst,CGI::App,Mojolicious(for a complete list check [4][5]).
PHP
本科生毕业设计(论文)
第 8页
The most prominent PHP frameworks are Symfony, Cakephp and Zend Framework.
These attack the programming problem from the "bottom-up."[6]
Software projects like Soholaunch,Drupal, Joomla, MODx, SilverStripe, or TYPO3 have
begun to morph from web CMSs to web application frameworks.
Python
There are numerous frameworks:
Python has, for example CubicWeb, web2py, Django, Karrigell, Pylons, Quixote,
TurboGears and Zope. There are many other options available as well.[7]
Ruby
Ruby has Ruby on Rails, Merb and Sinatra among others.
Lua
Lua has Kepler and Orbit.
Non-code based
The most common examples of coding without programming are:
WorkXpress
Common Lisp
There are a number of web application frameworks written in Common Lisp.
TCL
OpenACS is an open source web application framework designed for developing high
traffic web applications in Tcl.