Web framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse.[1] Although they often target development of dynamic web sites, they are also applicable to static websites.[2]
History
As the design of the
Original implementations of the CGI interface typically had adverse effects on the server load however, because each request started a separate process.[4] More recent implementations utilize persistent processes amongst other techniques to reduce the footprint in the server's resources and offer a general performance boost.[citation needed]
In 1995, fully integrated server/language development environments first emerged and new web-specific languages were introduced, such as
]Although the vast majority of languages for creating dynamic web pages have libraries to help with common tasks, web applications often require specific libraries for particular tasks, such as creating HTML (for example, Jakarta Faces).[citation needed]
In the late 1990s, mature, "full stack" frameworks began to appear, that often gathered multiple libraries useful for
Types of framework architectures
Most web frameworks are based on the model–view–controller (MVC) pattern.[citation needed]
Model–view–controller (MVC)
Many frameworks follow the MVC
Push-based vs. pull-based
Most MVC frameworks follow a push-based architecture also called "action-based". These frameworks use actions that do the required processing, and then "push" the data to the view layer to render the results.[5] 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.
Three-tier organization
In
Framework applications
Frameworks are built to support the construction of internet applications based on a single programming language, ranging in focus from general purpose tools such as Zend Framework and Ruby on Rails, which augment the capabilities of a specific language, to native-language programmable packages built around a specific user application, such as content management systems (CMS), some mobile development tools and some portal tools.[15]
General-purpose website frameworks
Web frameworks must function according to the architectural rules of browsers and
Server-side page changes typically require that the page be refreshed, but allow any language to be used and more computing power to be utilized. Client-side changes allow the page to be updated in small chunks which feels like a desktop application, but are limited to JavaScript and run in the user's browser, which may have limited computing power. Some mix of the two is typically used.[16] Applications which make heavy use of JavaScript and only refresh parts of the page, are called single-page applications and typically make use of a client-side JavaScript web framework to organize the code.[citation needed]
Server-side
- Apache Wicket
- ASP.NET Core
- CakePHP
- Catalyst
- CodeIgniter
- CppCMS
- Django
- Express.js
- Flask
- Grails
- Jam.py
- Laravel
- Mojolicious
- Pop PHP Framework
- Phoenix
- Ruby on Rails
- Sails.js
- Symfony
- Spring MVC
- Wt (web toolkit)
- Yii
- Zend Framework
Client-side
Examples include Backbone.js, AngularJS, Angular, Ember.js, ReactJS, jQuery UI, Svelte, and Vue.js.[17]
Features
Frameworks typically set the control flow of a program and allow the user of the framework to "hook into" that flow by exposing various events.[18] This "inversion of control" design pattern is considered to be a defining principle of a framework, and benefits the code by enforcing a common flow for a team which everyone can customize in similar ways.[18] For example, some popular "microframeworks" such as Ruby's Sinatra (which inspired Express.js) allow for "middleware" hooks prior to and after HTTP requests. These middleware functions can be anything, and allow the user to define logging, authentication and session management, and redirecting.[19]
Web template system
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.[citation needed]
Security
Some web 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. Drupal is one example that provides role-based access to pages, and provides a web-based interface for creating users and assigning them roles.[citation needed]
Database access, mapping and configuration
Many web frameworks create a unified
Some frameworks minimize web application configuration through the use of
Other features web frameworks may provide include transactional support[21] and database migration tools.[20]
URL mapping
A framework's
A URL mapping system that uses pattern matching or rewriting to route and handle requests allows for
AJAX
Ajax, shorthand for "Asynchronous JavaScript and XML", is a web development technique for creating 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 a web page's interactivity, speed, maintainability, and usability.[22]
Due to the complexity of Ajax programming in JavaScript, there are numerous
With the increased interest in developing "
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.[23]
Web resources
A number of newer
See also
- Comparison of JavaScript-based web frameworks (client-side)
- Comparison of server-side web frameworks
- Application server
- Application framework
- Application security
- Convention over configuration
- Don't repeat yourself (DRY)
- List of web service frameworks
- Rich web application(obsolete)
- Solution stack
References
- ^ Multiple (wiki). "Web application framework". Docforge. Archived from the original on 2015-07-23.
- ^ "Top Open-Source Static Site Generators". StaticGen.
- ^ "CGI: Common Gateway Interface". Archived from the original on 2009-04-09.
- ^ "CGI". www.ibm.com. Retrieved 2021-05-07.
- ^ Thomson, Kris (2003-10-29). "Clarification on MVC= Pull and MVC Push". Retrieved 2007-07-29.
- ^ Microsoft. "Three-tiered distribution". Retrieved 2011-09-19.
- ^ Oracle. "clustering_concepts_10en" (PDF). Retrieved 2011-09-19.
- ^ Robert R. Perkoski. "Introduction to Web Development". Archived from the original on 2013-11-07.
- ^ IBM. "Using Client Access Express in a three tier environment". Retrieved 2011-09-19.
- ^ Oracle. "Understanding the Three-Tier Architecture". Retrieved 2011-09-19.
- ^ Microsoft. "Pragmatic Architecture: Layering". Retrieved 2011-09-19.
- ^ Arokia. "3-Tier Web Architecture". Retrieved 2011-09-19.
- ^ "ASP.NET MVC Controller Best Practices". Archived from the original on 2011-10-11. Retrieved 2011-09-19.
- ^ Jamis Buck. "Skinny Controller, Fat Model". Archived from the original on 2015-05-16.
- Wired Magazine. Retrieved 2018-04-02.
- ^ KLIMUSHYN, Mel (6 April 2015). "Web Application Architecture – Client-Side vs. Server-Side". Atomic Spin. Retrieved 2016-03-06.
- ^ "AngularJS vs. Backbone.js vs. Ember.js". www.airpair.com. Retrieved 2016-06-04.
- ^ a b Fowler, Martin. "bliki: InversionOfControl". martinfowler.com. Retrieved 2016-03-06.
- ^ Xue, Qiang. "Capital One Engineering – Philosophies that Shaped Successful Frameworks". www.capitalone.io. Retrieved 2016-03-06.
- ^ a b c "Active Record Basics". Ruby on Rails. Retrieved March 20, 2021.
Object Relational Mapping, commonly referred to as its abbreviation ORM, is a technique that connects the rich objects of an application to tables in a relational database management system...Active Record automatically creates methods to allow an application to read and manipulate data stored within its tables.
- ^ "Active Record Transactions". Ruby on Rails. Retrieved March 20, 2021.
- ^ "What is AJAX". www.dlsweb.rmit.edu.au. Retrieved 2021-05-07.
- ISBN 0-7695-2669-1.