Content deleted Content added
Jtbwikiman (talk | contribs) m →Client and server communication: Changed wording - The protocols popularity is not the pertinent characteristic here |
added Category:Distributed computing architecture using HotCat |
||
(50 intermediate revisions by 35 users not shown) | |||
Line 1:
{{Short description|Distributed application structure in computing}}{{More citations needed|article (some sections)|date=March 2024}}[[File:Client-server-model.svg|thumb|250px|A computer network diagram of clients communicating with a server via the Internet]]
The '''client–server model''' is a [[distributed application]] structure that partitions tasks or workloads between the providers of a resource or service, called [[Server (computing)|servers]], and service requesters, called [[client (computing)|client]]s.<ref>{{cite web|url=http://java.sun.com/developer/Books/jdbc/ch07.pdf|publisher=Sun Microsystem|title=Distributed Application Architecture|archive-url=https://web.archive.org/web/20110406121920/http://java.sun.com/developer/Books/jdbc/ch07.pdf|access-date=2009-06-16|archive-date=6 April 2011}}</ref> Often clients and servers communicate over a [[Computer networking device|computer network]] on separate hardware, but both client and server may
Examples of computer applications that use the client–server model are [[email]], network printing, and the [[World Wide Web]].
==Client and server role==
Servers are classified by the services they provide. For example, a [[web server]] serves [[web page]]s and a [[file server]] serves [[computer file]]s. A [[shared resource]] may be any of the server computer's software and electronic components, from [[Computer program|programs]] and [[Data (computing)|data]] to [[Microprocessor|processors]] and [[Data storage device|storage devices]]. The sharing of resources of a server constitutes a ''service''.
Line 19:
==Example==
When a [[bank]] customer accesses [[online banking]] services with a [[web browser]] (the client), the client initiates a request to the bank's web server. The customer's [[login]] [[credential]]s
In each step of this sequence of client–server message exchanges, a computer processes a request and returns data. This is the request-response messaging pattern. When all the requests are met, the sequence is complete
This example illustrates a [[design pattern]] applicable to the client–server model: [[separation of concerns]].
Line 29:
{{More citations needed|section|small=y|date=December 2016}}
Server-side refers to programs and operations that run on the [[server (computing)|server]]. This is in contrast to client-side programs and operations which run on the [[client (computing)|client]].
=== General concepts ===
"Server-side software" refers to a [[computer application]], such as a [[web server]], that runs on remote [[server (computing)#Hardware|server hardware]], reachable from a [[user (computing)|user]]'s local [[computer]], [[smartphone]], or other device.<ref>{{cite web |url=https://www.cloudflare.com/en-gb/learning/serverless/glossary/client-side-vs-server-side/ |title=What do client side and server side mean? Client side vs. server side |publisher=Cloudflare |access-date=17 April 2025 }}</ref> Operations may be performed server-side because they require access to information or functionality that is not available on the [[client (computing)|client]], or because performing such operations on the [[client-side|client side]] would be slow, unreliable, or [[computer security|insecure]].
Client and server programs may be commonly available ones such as free or commercial [[web server]]s and [[web browser]]s, communicating with each other using standardized [[protocol (computing)|protocols]]. Or, [[programmer]]s may write their own server, client, and [[communications protocol]] which can only be used with one another.
Line 44:
In the case of [[distributed computing]] projects such as [[SETI@home]] and the [[Great Internet Mersenne Prime Search]], while the bulk of the operations occur on the client side, the servers are responsible for coordinating the clients, sending them data to analyze, receiving and storing results, providing reporting functionality to project administrators, etc. In the case of an Internet-dependent user application like [[Google Earth]], while querying and display of map data takes place on the client side, the server is responsible for permanent storage of map data, resolving user queries into map data to be returned to the client, etc.
▲However, web applications and [[web service|services]] can be implemented in almost any language, as long as they can return data to standards-based web browsers (possibly via intermediary programs) in formats which they can use.
[[Category:Servers (computing)]]▼
==Client side==
{{refimprove|section|small=y|date=December 2016}}{{See also|Client-side prediction|Front-end (computing)|Pagination# In web browsers|label 3=Pagination § In web browsers}}
Line 74 ⟶ 63:
=== Examples ===
[[Distributed computing]] projects such as [[SETI@home]] and the Great Internet Mersenne Prime Search, as well as Internet-dependent applications like [[Google Earth]], rely primarily on client-side operations. They initiate a connection with the server (either in response to a user query, as with Google Earth, or in an automated fashion, as with SETI@home), and request some data. The server selects a data set (a [[server-side]] operation) and sends it back to the client. The client then analyzes the data (a client-side operation), and, when the analysis is complete, displays it to the user (as with Google Earth) and/or transmits the results of calculations back to the server (as with SETI@home).
==Early history==
[[Category:Clients (computing)]]▼
An early form of client–server architecture is [[remote job entry]], dating at least to [[OS/360]] (announced 1964), where the request was to run a [[job (computing)|job]], and the response was the output.
While formulating the client–server model in the 1960s and 1970s, [[computer scientist]]s building [[ARPANET]] (at the [[SRI International|Stanford Research Institute]]) used the terms ''server-host'' (or ''serving host'') and ''user-host'' (or ''using-host''), and these appear in the early documents RFC 5<ref name="rulifson">{{cite IETF |title=DEL |rfc=5 |last=Rulifson |first=Jeff |authorlink=Jeff Rulifson |date=June 1969 |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=30 November 2013}}</ref> and RFC 4.<ref>{{cite IETF |title=Network Timetable |rfc=4 |last=Shapiro |first=Elmer B. |date=March 1969 |publisher=[[Internet Engineering Task Force|IETF]] |accessdate=30 November 2013}}</ref> This usage was continued at [[PARC (company)|Xerox PARC]] in the mid-1970s.
One context in which researchers used these terms was in the design of a [[computer network programming]] language called Decode-Encode Language (DEL).<ref name="rulifson"/> The purpose of this language was to accept commands from one computer (the user-host), which would return status reports to the user as it encoded the commands in network packets. Another DEL-capable computer, the server-host, received the packets, decoded them, and returned formatted data to the user-host. A DEL program on the user-host received the results to present to the user. This is a client–server transaction. Development of DEL was just beginning in 1969, the year that the [[United States Department of Defense]] established ARPANET (predecessor of [[Internet]]).
Line 91 ⟶ 74:
''Client-host'' and ''server-host'' have subtly different meanings than ''client'' and ''server''. A host is any computer connected to a network. Whereas the words ''server'' and ''client'' may refer either to a computer or to a computer program, ''server-host'' and ''client-host'' always refer to computers. The host is a versatile, multifunction computer; ''clients'' and ''servers'' are just programs that run on a host. In the client–server model, a server is more likely to be devoted to the task of serving.
An early use of the word ''client'' occurs in "Separating Data from Function in a Distributed File System", a 1978 paper by Xerox PARC computer scientists Howard Sturgis, James Mitchell, and Jay Israel. The authors are careful to define the term for readers, and explain that they use it to distinguish between the user and the user's network node (the client).<ref>{{Cite web| title=Separating Data from Function in a Distributed File System |last1 = Sturgis |first1 = Howard E. |last2 = Mitchell |first2 = James George |last3 = Israel | first3 = Jay E. |publisher=[[PARC (company)|Xerox PARC]] |url=http://ip.com/IPCOM/000128883 |year = 1978}}</ref> By 1992, the word ''server'' had entered into general parlance.<ref>{{OEtymD|server|accessdate=30 November 2013}}</ref><ref>{{cite web |url=https://getinfo.de/app/Separating-data-from-function-in-a-distributed/id/TIBKAT%3A509976956 |title=Separating data from function in a distributed file system |author=<!--Staff writer(s); no by-line.--> |website=[[GetInfo]] |publisher=[[German National Library of Science and Technology]] |access-date=29 November 2013 |archive-url=https://web.archive.org/web/20131202233729/https://getinfo.de/app/Separating-data-from-function-in-a-distributed/id/TIBKAT%3A509976956 |archive-date=2 December 2013 |url-status=dead }}</ref>
==Centralized computing==
Line 98 ⟶ 81:
The client-server model does not dictate that server-hosts must have more resources than client-hosts. Rather, it enables any general-purpose computer to extend its capabilities by using the shared resources of other hosts. [[Centralized computing]], however, specifically allocates a large number of resources to a small number of computers. The more computation is offloaded from client-hosts to the central computers, the simpler the client-hosts can be.<ref name="Columbia">{{cite journal |last1=Nieh |first1=Jason |last2=Yang |first2=S. Jae |last3=Novik |first3=Naomi |title=A Comparison of Thin-Client Computing Architectures |journal=Academic Commons |date=2000 |doi=10.7916/D8Z329VF |url=https://academiccommons.columbia.edu/doi/10.7916/D8Z329VF |access-date=28 November 2018 |language=en}}</ref> It relies heavily on network resources (servers and infrastructure) for computation and storage. A [[diskless node]] loads even its [[operating system]] from the network, and a [[computer terminal]] has no operating system at all; it is only an input/output interface to the server. In contrast, a [[rich client]], such as a [[personal computer]], has many resources and does not rely on a server for essential functions.
As [[microcomputer]]s decreased in price and increased in power from the 1980s to the late 1990s, many organizations transitioned computation from centralized servers, such as [[Mainframe computer|mainframe]]s and [[minicomputer]]s, to rich clients.<ref>{{Cite book | last1 = d'Amore | first1 = M. J. | last2 = Oberst | first2 = D. J. | doi = 10.1145/800041.801417 | chapter = Microcomputers and mainframes | title = Proceedings of the 11th annual ACM SIGUCCS conference on User services - SIGUCCS '83 | pages = 7 | year = 1983 | isbn = 978-0897911160 | s2cid = 14248076 }}</ref> This afforded greater, more individualized dominion over computer resources, but complicated [[information technology management]].<ref name="Columbia"/><ref name="tolia">{{Cite journal |last1 = Tolia |first1 = Niraj |last2 = Andersen |first2 = David G. |last3 = Satyanarayanan |first3 = M. |title = Quantifying Interactive User Experience on Thin Clients |journal = [[Computer (magazine)|Computer]] |volume = 39 |pages = 46–52 |number = 3 |date = March 2006 |publisher = [[IEEE Computer Society]] |url = https://www.cs.cmu.edu/~dga/papers/tolia06-ieee.pdf |doi = 10.1109/mc.2006.101 |s2cid = 8399655 }}</ref><ref>{{cite web |url=http://sqlmag.com/cloud/cloud-really-just-return-mainframe-computing |title=Is the Cloud Really Just the Return of Mainframe Computing? |last=Otey |first=Michael |date=22 March 2011 |website=
==Comparison with peer-to-peer architecture==
Line 107 ⟶ 90:
Load balancing is defined as the methodical and efficient distribution of network or application traffic across multiple servers in a server farm. Each load balancer sits between client devices and backend servers, receiving and then distributing incoming requests to any available server capable of fulfilling them.
In a [[peer-to-peer]] network, two or more computers (''peers'') pool their resources and communicate in a [[decentralized system]]. Peers are coequal, or equipotent [[Node (networking)|nodes]] in a non-hierarchical network. Unlike clients in a client-server or [[client-queue-client]] network, peers communicate with each other directly. <ref>{{
Both client-server and [[Master/slave (technology)|master-slave]] are regarded as sub-categories of distributed peer-to-peer systems.<ref>
Line 149 ⟶ 132:
{{DEFAULTSORT:Client-server model}}
▲[[Category:Servers (computing)]]
▲[[Category:Clients (computing)]]
[[Category:Application layer protocols|*]]
[[Category:Clients (computing)|*]]▼
[[Category:Inter-process communication]]
[[Category:Network architecture]]
|