Content deleted Content added
This page is not quite an article, and not quite a disambiguation. It needs to be one or the other (or perhaps both as several pages) |
m Annh07 moved page Front end and back end (software development) to Front end and back end without leaving a redirect: Requested by DigitalIceAge at WP:RM/TR: Unnecessary disambiguation. |
||
(401 intermediate revisions by more than 100 users not shown) | |||
Line 1:
{{Short description|Presentation and data management in software systems}}
In [[software development]], '''front end''' refers to the [[presentation layer]] that users interact with, while '''back end''' refers to the [[data management]] and processing behind the scenes. "Full stack" refers to both together. In the [[client–server model]], the [[Client (computing)|client]] is usually considered the front end, handling most user-facing tasks, and the [[Server (computing)|server]] is the back end, mainly managing data and logic.
== Introduction ==
In [[software architecture]], there can be many [[Abstraction layer|layers]] between the hardware and [[End-user (computer science)#End user|end user]]. The ''front end'' is an abstraction, simplifying the underlying components by providing a [[user-friendly]] interface, while the ''back end'' handles data storage and [[business logic]].
== Examples ==
'''E-commerce Website''': The front end is the user interface (e.g., product pages, search bar), while the back end processes payments and updates inventory.
'''Banking App''': The front end displays account balances, while the back end handles secure transactions and updates records.
'''Social Media Platform''': The front end shows the news feed, while the back end stores posts and manages notifications.
In [[telecommunication]], the front end can be considered a device or service, while the back end is the infrastructure that supports the provision of services.
A [[rule of thumb]] is that the front end, or client side, includes any components manipulated by the user. The back end, or server side, usually resides on the [[Server (computing)|server]], often far removed physically from the user.
== Software definitions ==
{{prose|section|date=September 2020}}
In [[content management system]]s, the front end refers to views facing end users, and the back end refers to views facing administrative users.<ref>{{Cite web|url=https://letsgodojo.com/front-end-vs-back-end/|title=Front End vs Back End of Your Website: Everything You Need to Know|website=DOJO Creative|date=7 February 2020|access-date=31 August 2022|archive-date=1 September 2022|archive-url=https://web.archive.org/web/20220901020406/https://letsgodojo.com/front-end-vs-back-end/|url-status=live}}</ref><ref>{{Cite web|url=http://joomlatuts.net/joomla-2-5/87-how-backend-model-view-controller-mvc-works-in-joomla/98-difference-between-frontend-and-backend-mvc|title=Difference Between Frontend and Backend MVC – Joomlatuts|last=Thapliyal|first=Vimal|website=joomlatuts.net|access-date=30 December 2016|archive-url=https://web.archive.org/web/20161230230237/http://joomlatuts.net/joomla-2-5/87-how-backend-model-view-controller-mvc-works-in-joomla/98-difference-between-frontend-and-backend-mvc|archive-date=30 December 2016|url-status=dead}}</ref>
In [[speech synthesis]], the front end refers to the part of the synthesis system that converts the input text into a [[symbol]]ic [[phonetics|phonetic]] representation, and the back end converts the symbolic phonetic representation into actual sounds.<ref>{{Cite web|url=http://research.cs.tamu.edu/prism/lectures/sp/l18.pdf|title=L18: Speech synthesis (backend)|last=Gutierrez--Osuna|first=Ricardo|website=tamu.edu|publisher=Texas A&M University|access-date=29 December 2016|archive-date=14 February 2019|archive-url=https://web.archive.org/web/20190214183352/http://research.cs.tamu.edu/prism/lectures/sp/l18.pdf|url-status=dead}}</ref>
In [[compilers]], the front end [[Translator (computing)|translates]] computer [[source code]] into an [[intermediate representation]], and the back end produces executable code from the intermediate representation. The back end usually [[Program optimization|optimizes]] to produce code that runs faster. The front end/back end distinction can also separate a [[Parsing|parser]] that deals with source code from a compiler that [[Code generation (compiler)|generates and optimizes executable code]]. Some designs, such as [[GNU Compiler Collection|GCC]], offer multiple front end options (parsing different source [[Programming language|languages]]) and multiple back end options (generating code for different target [[Central processing unit|processors]]).<ref>{{Cite web|url=http://www.personal.kent.edu/~rmuhamma/Compilers/MyCompiler/phase.htm|title=Operating Systems Notes|last=Bin Muhammad|first=Rashid|website=www.personal.kent.edu|publisher=Kent State University|access-date=30 December 2016|archive-date=31 August 2018|archive-url=https://web.archive.org/web/20180831090618/http://personal.kent.edu/~rmuhamma/Compilers/MyCompiler/phase.htm|url-status=live}}</ref>
Some [[graphical user interface]] (GUI) applications act as a thin front end for underlying [[command-line interface]] (CLI) programs, to save users from having to learn the CLI terminology and [[Command (computing)|commands]].
=== Web development as an example ===
Another way to understand the differences between the front end and back end is to consider the knowledge that each requires of a [[software developer]]. The example lists below focus on [[web development]].
==== Front end ====
* Markup and web languages such as [[HTML]], [[CSS]], and [[JavaScript]], as well as ancillary libraries commonly used in those languages, such as [[Sass (stylesheet language)|Sass]] or [[jQuery]]
* [[Asynchronous I/O|Asynchronous]] request handling and [[Ajax (programming)|AJAX]]
* [[Single-page application]]s with frameworks like [[React (JavaScript library)|React]], [[Angular (web framework)|Angular]] or [[Vue.js]]
* [[Web performance]] (optimization of things like largest contentful paint, time to interactive, animation [[Frame rate|FPS]], and memory usage)
* [[Responsive web design]]
* [[Cross-browser]] compatibility issues and workarounds
* [[Software testing|End-to-end testing]] with a [[headless browser]]
* [[Build automation]] to transform and bundle JavaScript files, reduce image sizes, and handle other processes using tools such as [[Webpack]] and [[Gulp.js]]
* [[Search engine optimization]]
* [[Web accessibility|Accessibility]] concerns
* Image editing tools such as [[GIMP]] or [[Adobe Photoshop|Photoshop]]
* [[User interface]] design and creation
==== Back end ====
* [[Scripting language]]s like [[PHP]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Perl]], and [[Node.js]]
* [[Compiled language]]s like [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], and [[Go (programming language)|Go]]
* [[Data access layer]]
* [[Business logic]]
* [[Database administrator|Database administration]]
* [[Scalability]]
* [[High availability]]
* Security concerns, such as [[authentication]] and [[authorization]]
* [[Software architecture]]
* [[Data transformation]]
* [[Backup]] methods and software
==== Front end and back end ====
* [[Version control]] tools such as [[Git]], [[Mercurial]], and [[Apache Subversion|Subversion]]
* [[File transfer]] tools and protocols such as [[FTP]] and [[rsync]]
=== API ===
The front end communicates with the back end through an [[API]]. In the case of [[Web API|web]] and mobile front ends, the API is often based on [[HTTP]] requests/responses. An API can also reduce the front-end processing load by using different back-end services for different front-end interfaces, such as in the "Back end For Front end" (BFF) pattern.<ref>{{cite web | last=Wickramarachchi | first=Viduni | title=The BFF Pattern (Backend for Frontend): An Introduction | website=Bits and pieces | date=24 February 2021 | url=https://blog.bitsrc.io/bff-pattern-backend-for-frontend-an-introduction-e4fa965128bf | access-date=13 November 2021 | archive-date=27 March 2024 | archive-url=https://web.archive.org/web/20240327144654/https://blog.bitsrc.io/bff-pattern-backend-for-frontend-an-introduction-e4fa965128bf?gi=f6e22c3d720c | url-status=live }}</ref>
== Hardware definitions ==
In [[computer network|computer networking]], ''front end'' can refer to [[Networking hardware|hardware]] that connects devices to the network, provides security such as a [[DMZ (computing)|DMZ]], or converts data into a [[Network Packet|transportable format]]. ''Back end'' refers to hardware that handles and transports data within the network.
In [[processor design]], ''front-end design'' can refer to the initial description of a circuit's behavior in a [[hardware description language]] such as [[Verilog]], while ''back-end design'' can refer to the process of mapping that behavior to physical transistors on a [[Die (integrated circuit)|die.]]<
== See also ==
{{Columns-list|colwidth=30em|
* [[Client-side]], [[Server-side]]
* [[Front-end web development]]
* [[Client–server model]]
* [[Out-of-box experience]]
* [[Modular programming]]
* [[Observer pattern]]
* [[Publish–subscribe pattern]]
* [[Pull technology]]
* [[Push technology]]
* [[Remote procedure call]]
* [[Application program interface]] (API)
}}
== References ==
{{Reflist|30em}}
{{Web interfaces}}
{{DEFAULTSORT:Front And Back Ends}}
[[Category:Software architecture]]
[[Category:Software engineering terminology]]
|