Actions

Client Server Model

The client-server model is a framework for computer network communications in which a computer system called a “server” provides requested services to more than one computer or program, called a “client.” The client-server model has become the predominant framework for providing services like email and Internet access to multiple clients.[1]

The client-server model is a distributed communication framework of network processes among service requestors, clients and service providers. The client-server connection is established through a network or the Internet. The client-server model is a core network computing concept also building functionality for email exchange and Web/database access. Web technologies and protocols built around the client-server model are:

Clients include Web browsers, chat applications, and email software, among others. Servers include Web, database, application, chat and email, etc.[2]

A common way of organizing software to run on distributed systems is to separate functions into two parts: clients and servers. A client is a program that uses services that other programs provide. The programs that provide the services are called servers. The client makes a request for a service, and a server performs that service. Server functions often require some resource management, in which a server synchronizes and manages access to the resource, and responds to client requests with either data or status information. Client programs typically handle user interactions and often request data or initiate some data modification on behalf of a user. For example, a client can provide a form onto which a user (a person working at a data entry terminal, for example) can enter orders for a product. The client sends this order information to the server, which checks the product database and performs tasks that are needed for billing and shipping. Typically, multiple clients use a single server. For example, dozens or hundreds of clients can interact with a few servers that control database access. The client is isolated from the need to know anything about the actual resource manager. If you change the database that you are using, the server possibly needs to be modified, but the client does not need to be modified. Because usually fewer copies exist of the server than of the client, and because the servers are often in locations that are easier to update (for example, on central machines instead of on PCs that are running on users' desks), the update procedure is also simplified. Also, this approach provides additional security. Only the servers, not the clients, need access to the data that the resource manager controls. Clients can also access several different servers, and the servers themselves can act as clients to other servers. Exactly how the functions are distributed across servers is an application design decision. For example, a single server could provide all the services that a client needs, or the client could access multiple servers to perform different requests. The application designer must consider items such as scalability, location, and security. For example, are the clients and servers local or is the application distributed over a wide geographic area? Do the servers need to be on machines that are physically secure? Some servers are part of an application and are referred to as application servers. Other servers are not part of a specific application. Instead, any application can use them. For example, the CICS® Structured File Server (SFS) provides record-oriented file access for applications.[3]

Most modern network programming is based on a client/server model. A client/server application typically stores large quantities of data on an expensive, high-powered server, while most of the program logic and the user interface is handled by client software running on relatively cheap personal computers. In most cases, a server primarily sends data, while a client primarily receives it, but it is rare for one program to send or receive exclusively. A more reliable distinction is that a client initiates a conversation, while a server waits for clients to start conversations with it. Figure 1 illustrates both possibilities. In some cases, the same program may be both a client and a server.


A Client/Server Connection
Client Server Model
Figure 1. source: Elliotte Rusty Harold


Some servers process and analyze the data before sending the results to the client. Such servers are often referred to as “application servers” to distinguish them from the more common file servers and database servers. A file or database server will retrieve information and send it to a client, but it won’t process that information. In contrast, an application server might look at an order entry database and give the clients reports about monthly sales trends. An application server is not a server that serves files that happen to be applications.[4]


How Client Server Model Works with Example[5]
When a client requests a connection to a server, the server can either accept or reject the connection. If the connection is accepted, the server establishes and maintains a connection with the client over a specific protocol. For example, an email client may request an SMTP connection to a mail server in order to send a message. The SMTP application on the mail server will then request authentication from the client, such as the email address and password. If these credentials match an account on the mail server, the server will send the email to the intended recipient. Online multiplayer gaming also uses the client-server model. One example is Blizzard's Battle.net service, which hosts online games for World of Warcraft, StarCraft, Overwatch, and others. When players open a Blizzard application, the game client automatically connects to a Battle.net server. Once players log in to Battle.net, they can see who else is online, chat with other players, and play matches with or against other gamers. While Internet servers typically provide connections to multiple clients at a time, each physical machine can only handle so much traffic. Therefore, popular online services distribute clients across multiple physical servers, using a technique called distributed computing. In most cases, it does not matter which specific machine users are connected to, since the servers all provide the same service.


Early History of Client Server Model[6]
An early form of client–server model is remote job entry, dating at least to OS/360 (announced 1964), where the request was to run a job, and the response was the output. While formulating the client–server model in the 1960s and 1970s, computer scientists building ARPANET (at the 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 and RFC 4. This usage was continued at 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). 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).


Client-Server vs. Peer-to-Peer and Other Models[7]
The client-server model of networking was originally developed to share access to database applications among larger numbers of users. Compared to the mainframe model, client-server networking gives better flexibility as connections can be made on-demand as needed rather than being fixed. The client-server model also supports modular applications that can make the job of creating software easier. In so-called two tier and three tier types of client-server systems, software applications are separated into modular components, and each component is installed on clients or servers specialized for that subsystem. Client-server is just one approach to managing network applications. The primary alternative to client-server, peer-to-peer networking, treats all devices as having equivalent capability rather than specialized client or server roles. Compared to client-server, peer to peer networks offer some advantages such as better flexibility in expanding the network to handle a large number of clients. Client-server networks generally offer advantages over peer-to-peer as well, such as the ability to manage applications and data in one centralized location.


Advantages And Disadvantages of Client Server Model[8]

  • Advantages
    • Centralization of control: access, resources and integrity of the data are controlled by the dedicated server so that a program or unauthorized client cannot damage the system. This centralization also facilitates task of updating data or other resources (better than the networks P2P).
    • Scalability: You can increase the capacity of clients and servers separately. Any element can be increased (or enhanced) at any time, or you can add new nodes to the network (clients or servers).
    • Easy maintenance: distribute the roles and responsibilities to several standalone computers, you can replace, repair, upgrade, or even move a server, while customers will not be affected by that change (or minimally affect). This independence of the changes is also known as encapsulation.
    • There are technologies sufficiently developed, designed for the paradigm of C / S to ensure security in transactions, interface friendliness, and ease of use.
  • Disadvantages
    • Traffic congestion has always been a problem in the paradigm of C / S. When a large number of simultaneous clients send requests to the same server might cause many problems for this (to more customers, more problems for the server). On the contrary, P2P networks each node in the network server also makes more nodes, the better bandwidth you have.
    • The paradigm of C / S Classic does not have the robustness of a network P2P. When a server is down, customer requests cannot be met. In most part, P2P networks resources are usually distributed across multiple nodes of the network. Although some out or abandon download, others may still end up getting data download on rest of the nodes in the network.
    • The software and hardware of a server are usually very decisive. A regular computer hardware staff may not be able to serve a certain number of customers. Usually you need specific software and hardware, especially on the server side, to meet the work . Of course, this will increase the cost.
    • The client does not have the resources that may exist on the server. For example, if the application is a Web, we cannot write the hard disk of the client or print directly on printers without taking before the print preview window of the browser.


Issues And Challenges In Client-Server System[9]
There are lots of issues in a client-server system, some of which include:

  • The number of people: In most client-server network, few servers are always involved which make the setup looks like a waste of time. A client server network is quite difficult to set up, so it requires lots of servers so as not to render the application useless.
  • It requires skilled expertise: A lot of client-server network are not well build and managed. Setting up a client server network is so complex, so it requires skilled technician and maintenance engineers to handle it.
  • The servers are quite expensive: The servers are being designed to meet high standard for it to be reliable and have better performance. Getting the good design and architecture for the client-server system, contributes to it being expensive.
  • Security: The most of all is the security issue. The client operating system is easily accessed by servers, and this expose the client system to a number of problems . The message being exchange between the client and server leads to lot of security challenges. A lot of things are encompassing by the security challenges, some of which include: physical damage, threats and virus attack. In other to have a secured network, there are some basic rules to be followed such as;
    • The Audit network
    • The discretionary control
    • The object re-use
    • Authorization and identification


See Also

Client Server Architecture
Client Maturity Model
Client Outsourcing Maturity Model (COMM)
Object Oriented Approach
Object Oriented Design (OOD)
Object Oriented Methodology (OOM)
Object Oriented Modeling (OOM)
Object Oriented Programming (OOP)
Server-Side Rendering
Server-Side Scripting
Server Operating System
Serverless Architecture
Serverless Framework
Serverless Computing


References

  1. What does Client Server Model Mean?Business Intelligence
  2. Definition of Client Server Model Techopedia
  3. Explaining Client Server Model IBM
  4. Understanding Client Server Model Second Edition by Elliotte Rusty Harold
  5. How Client Server Model Works with Example Techterms
  6. Early History of Client Server Model Wikipedia
  7. Client-Server vs. Peer-to-Peer and Other Models Livewire
  8. What are the Advantages And Disadvantages of Client Server Model? ESDS
  9. Issues And Challenges In Client-Server System Shakirat Haroon Sulyman


Further Reading