Web framework: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Add: website, publisher, date, authors 1-3. Removed parameters. | Use this bot. Report bugs. | #UCB_CommandLine
Rescuing 3 sources and tagging 1 as dead.) #IABot (v2.0.9.5
Line 36:
 
===Three-tier organization===
In [[Three-tier architecture|three-tier organization]], applications are structured around three physical tiers: client, application, and database.<ref>{{cite web | url=http://msdn.microsoft.com/en-us/library/ff647546.aspx | title=Three-tiered distribution | author=Microsoft | access-date=2011-09-19 }}</ref><ref>{{cite web | url=http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/integrator/clustering_concepts_10en.pdf | title=clustering_concepts_10en | author=Oracle | access-date=2011-09-19}}</ref><ref>{{cite web | url= http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt | title=Introduction to Web Development | author=Robert R. Perkoski |archive-url=https://web.archive.org/web/20131107052241/http://www.sis.pitt.edu/~perkoski/is1092/slides/chapter01.ppt | archive-date=2013-11-07}}</ref><ref>{{cite web | url=http://publib.boulder.ibm.com/html/as400/v5r1/ic2933/index.htm?info/rzaii/rzaiithreetier.htm | title= Using Client Access Express in a three tier environment | author=IBM | access-date=2011-09-19}}</ref> The database is normally an [[relational database management system|RDBMS]]. The application contains the business logic, running on a server and communicates with the client using [[HTTP]].<ref>{{cite web | url=http://download.oracle.com/docs/cd/B25221_05/web.1013/b13593/undtldev010.htm | title=Understanding the Three-Tier Architecture | author=Oracle | access-date=2011-09-19}}</ref> The client on web applications is a web browser that runs HTML generated by the application layer.<ref>{{cite web | url=http://msdn.microsoft.com/en-us/library/aa905336.aspx | title=Pragmatic Architecture: Layering | author=Microsoft | access-date=2011-09-19}}</ref><ref>{{cite web | url=http://www.arokiait.com/3-tire-web-architechture.htm | title=3-Tier Web Architecture | author=Arokia | access-date=2011-09-19 | archive-date=2012-07-18 | archive-url=https://archive.today/20120718123635/http://www.arokiait.com/3-tire-web-architechture.htm | url-status=dead }}</ref> The term should not be confused with MVC, where, unlike in three-tier architecture, it is considered a good practice to keep business logic away from the controller, the "middle layer".<ref>{{cite web|url=http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-–-skinny-controllers/ |title=ASP.NET MVC Controller Best Practices |access-date=2011-09-19 |url-status=dead |archive-url=https://web.archive.org/web/20111011174215/http://www.arrangeactassert.com:80/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/ |archive-date=2011-10-11 }}</ref><ref>{{cite web | url=http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model | title=Skinny Controller, Fat Model | author=Jamis Buck |archive-url=https://web.archive.org/web/20150516021854/http://www.arrangeactassert.com/asp-net-mvc-controller-best-practices-%E2%80%93-skinny-controllers/ | archive-date=2015-05-16}}</ref>
 
==Framework applications==
Line 77:
{{Main article|Single-page application}}
 
Examples include [[Backbone.js]], [[AngularJS]], [[Angular (web framework)|Angular]], [[Ember.js]], [[React (software)|ReactJS]], [[jQuery UI]], [[Svelte]], and [[Vue.js]].<ref>{{Cite web|url=https://www.airpair.com/js/javascript-framework-comparison|title=AngularJS vs. Backbone.js vs. Ember.js|website=www.airpair.com|language=en-US|access-date=2016-06-04|archive-date=2023-03-26|archive-url=https://web.archive.org/web/20230326023041/https://www.airpair.com/js/javascript-framework-comparison|url-status=dead}}</ref>
 
=== Capabilities and Trade-offs in Modern Frameworks ===
Line 87:
 
==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.<ref name=":0">{{Cite web|url=http://martinfowler.com/bliki/InversionOfControl.html|title=bliki: InversionOfControl|last=Fowler|first=Martin|website=martinfowler.com|access-date=2016-03-06}}</ref> 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.<ref name=":0" /> For example, some popular "microframeworks" such as Ruby's [[Sinatra (software)|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.<ref>{{Cite web|url=http://www.capitalone.io/blog/successful-framework-philosophies/|title=Capital One Engineering – Philosophies that Shaped Successful Frameworks|last=Xue|first=Qiang|website=www.capitalone.io|access-date=2016-03-06|archive-date=2016-03-13|archive-url=https://web.archive.org/web/20160313083028/http://www.capitalone.io/blog/successful-framework-philosophies/|url-status=dead}}</ref>
 
===Web template system===
Line 115:
===AJAX===
{{Main article|Ajax framework}}
[[Ajax (programming)|Ajax]], shorthand for "''[[Asynchronous I/O|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]].<ref>{{Cite web|title=What is AJAX|url=https://www.dlsweb.rmit.edu.au/set/Courses/Content/CSIT/oua/cpt270/chapter/08/WhatisAJAX.html|access-date=2021-05-07|website=www.dlsweb.rmit.edu.au}}{{Dead link|date=August 2025 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>
 
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 [[jQuery]] [[JavaScript library]] is included in Ruby on Rails.{{citation needed|date=January 2017}}