Client-server

Client-server computing or networking is a spread application architecture that partitions tasks or work loads among service providers (servers) and service requesters, called clients. Often clients and servers function over a computer network on divide hardware. A server machine is a high-performance host that is running one or more server programs which divide its resources with clients. A client does not share any of its resources, but requests a server's content or service function. Clients therefore initiate communication sessions with servers which await incoming requests.

Contents

• 1 Description
• 2 Comparison to peer-to-peer architecture
• 3 Comparison to client-queue-client architecture
• 4 Advantages
• 5 Disadvantages
• 6 See also
• 7 References

Description

Client-server describe the association among two computer programs in which one program, the client program, make a service request to another, the server program. Standard networked function such as email exchange, web access and database access, are based on the client-server model. Such as, a web browser is a client program at the user computer that may access information at some web server in the world. To check your bank account from your computer, a web browser client program in your computer forwards your request to a web server program at the bank. That program may in turn forward the request to its own database client program that sends a request to a database server at another bank computer to retrieve your account balance. The balance is returned to the bank database client, which in turn serves it back to the web browser client in your personal computer, which displays the information for you. The client-server model has become one of the central ideas of network computing. Many trade applications being written these days use the client-server model. So do the Internet's main application protocols, such as HTTP, SMTP, Telnet, DNS. In marketing, the term has been used to distinguish distributed computing by smaller dispersed computers from the "monolithic" centralized computing of mainframe computers. But this distinction has largely disappeared as mainframes and their applications have also turned to the client-server model and become part of network computing.

Each request of the client software can send data requests to one or more connected servers. In turn, the servers can accept these requests, procedure them, and return the requested information to the client. Although this concept can be applied for a multiplicity of reasons to many different kinds of applications, the architecture remains primarily the same. The most necessary type of client-server planning employs only two types of hosts: clients and servers. This type of architecture is at times referred to as two-tier. It allows devices to share files and resources. The two tier architecture means that the client acts as one tier and application in combination with server acts as another tier. The interaction between client and server is often described using succession diagrams. Sequence diagrams are standardized in the Unified Modeling Language. Specific types of servers include web servers, ftp servers, application servers, database servers, name servers, mail servers, file servers, print servers, and terminal servers. Most web services are also types of servers.

Comparison to peer-to-peer architecture

In peer-to-peer architectures, each host or request of the program can all together act as both a client and a server, and each has equivalent responsibilities and status. Both client-server and peer-to-peer architectures are in broad usage today. Details may be found in Comparison of Centralized (Client-Server) and Decentralized (Peer-to-Peer) Networking.

Comparison to client-queue-client architecture

While classic client-server design require one of the communication finish points to act as a server, which is greatly harder to implement, Client-Queue-Client allows all endpoints to be simple clients, while the server consists of some external software, which also acts as passive queue (one software instance passes its query to another instance to queue, e.g. database, and then this other instance pulls it from a database, makes a response, passes it to database etc.). This architecture allows greatly simplified software implementation. Peer-to-peer architecture was originally based on the Client-Queue-Client concept.

Advantages

• In most cases, client-server design enables the roles and errands of a computing system to be spread among several independent computers that are known to each other only through a network. This creates an additional advantage to this architecture: greater ease of maintenance. For example, it is possible to replace, repair, upgrade, or even relocate a server while its clients remain both unaware and unaffected by that change.
• All the data is stored on the servers, which usually have far bigger security control than most clients. Servers can better control access and resources, to guarantee that only those clients with the appropriate permissions may access and change data.
• Since data storage space is national, updates to that data are far easier to administer than what would be achievable under a P2P paradigm. Under P2P architecture, data updates may need to be distributed and applied to each peer in the network, which is both time-consuming and error-prone, as there can be thousands or even millions of peers.
• A lot of mature client-server technologies are previously accessible which were designed to ensure security, friendliness of the user interface, and ease of use.
• It functions with multiple different clients of different capabilities.

Disadvantages

• Traffic congestion on the network has been a concern since the inception of the client-server model. As the number of immediate client requests to a given server increase, the server can become congested. Contrast that to a P2P network, where its aggregated bandwidth actually increases as nodes are added, since the P2P network's overall bandwidth can be roughly computed as the sum of the bandwidths of every node in that network.
• The client-server paradigm lacks the robustness of a good P2P network. Under client-server, should a critical server fail, clients’ requests cannot be fulfilled. In P2P networks, resources are usually distributed among many nodes. Even if one or more nodes depart and abandon a downloading file, for example, the remaining nodes should still have the data needed to complete the download