Client-server is a computer technology model that works as separate clients and servers but which is interlinked with the help of a computer network. Any instance of a client can send a request to a server that is available online and wait for a response from it. The servers that are available online at that instant can process that request and return it to the client that made the request. The client-server technology model is currently put to use in different types of applications. The architecture, however, is nearly the same.
In real life, the client usually presents and further manipulates the data on the desktop system. That is, they run applications. The server is used to store and retrieve data that is precious and needs to be protected. Servers contain processes that manage printers, disk drives, or controls network traffic. Clients depend on servers for resources such as files, processing power and certain devices.
Here are a couple of more characteristics of client-server systems:
#1: Both the client and server may reside on the same system. However, each has its hardware. Such a machine is a host server capable of simultaneously running server programs and sharing their resources with the clients.
#2: Clients are not designed to share their resources. However, it can request content from the server. Any communication is, therefore, initiated by clients and hosts wait for such these requests.
#3: A server can serve multiple clients at a time. The number of client requests is limited for a server. The response system of the server is designed on a priority basis. However, a client is in touch only with a single server at any point in time.
#4: the communication protocol for the server and the client is the same facilitating easy communications. The communication protocols used are available in the application layer.
How a Typical Client-Server System Works in Real Life
Also referred to as the three-tier technology system, the three distinct parts of the client-server setup are the database server, client application and the network.
Database server manages resources such as the database among the different clients when these clients simultaneously request the server for the same database. They control access and security requirements. They are in charge of backing up the database resource and manage recovery features. The server manages the integrity of the database across different client applications.
The client application is the second part and this is where the users interact with the available data. The UI to complete the required job lies here. The interfaces and the program logic work here. The information sent to and received from the server is managed here.
The third part constitutes the network and consists of the communication software that is in place. This software allows the server to converse with the client according to the requirement.
Applications that use the Client-server Model
The most common applications that use the client-server model are email applications, the World Wide Web and network printing.
Uses of Client-Server Technology
The basis on which most network computing functions is by the use of client-server technology. There are a large number of business applications that are designed using the client-server model. The applications can be many but the basic design architecture remains the same.
With the growth of online businesses, the demand for client-server-based applications has seen a spurt in growth. Online business companies have their users in different parts of the globe who interact with these businesses through their websites from these different locations.
In the web model, a user query is transmitted to the web server through a browser which is the web client. The web server displays the page requested by the browser. The online business models require quick responses and quality service which can be obtained only via the client-server model.
The client-server model is also extensively being used in eCommerce business software and other business applications. In addition to the client-server architecture, they also use the TCP/IP, Internet’s main protocol.
Marketing applications of today use smaller distributed systems instead of the mainframes and their applications that were used many years ago.
In essence, the application processing happens closer to the client-side and this helps to improve the overall performance.
Distinct Features of Client-Server Architecture
#1: Shared resources
A server serves multiple clients at a time and regulates access of the clients to all the share resources.
A server provides services that the client consumes. This happens through many different processes that run on different machines termed as servers and clients.
#3: Functional Modules
The client-server architecture has well-designed interfaces and functions that are performed by the client and server use software modules, hardware components, or both. Sometimes these are located on dedicated machine systems.
#4: Location Transparency
The server process can be located on the same machine as the client or on a different system across a network. The software is designed to veil the location of the server from the clients and only the service calls are directed as per requirements. A program can be a server, client or both.
#5: Asymmetrical Protocols
The clients and servers have an m:1 relationship. That is, a server waits passively for initiation service dialog from many clients.
The software that is designed for a client-server setup works independently of both the hardware and the operating system platforms. This allows for mix and match of both client and server programs.
#7: Service Encapsulation
The server acts as a specialist in that it decides the action be taken after a request is received from the client. The server can be upgraded to execute any request, if need be, without affecting the client if the message interface is not affected.
#8: Message-based Exchange
The main function of any client-server system relies on the message passing system between the client and the server. The message is the delivery system that is employed for both the service requests and the corresponding replied.
By horizontal scaling, the action involves the addition of more clients. The impact will be minimal. Vertical scaling involves migration to a larger or a more powerful server and the action is more complex. Multi-server systems are also possible.
#10: Integrity of Systems
The server data and code is maintained centrally and this helps to guard the integrity of the data that is shared. Clients are however independent.
#11: Time Limits
Servers are expected to work or respond within specific time limits to keep up the quality of service. Problems may, however, occur when the load is high.
Types of Client-Server Architecture
The different types of client-server architecture designs that exist are two-tier architecture and three-tier architecture.
In this design, the work is divided between the host or the server and the client, which has the user interface. The tiers are logically separated but may reside on the same system. Such systems are advantageous in that applications can be designed easily, user satisfaction is high, suits homogeneous, disconnected environments and performance metrics are high.
The performance of such systems is seen to drop when the population increases as the connections are required to be kept live when work is not being done. Security is complicated, and the functionality of the application becomes limited. Portability is also limited.
This design was introduced to overcome the limitations of two-tier design. This has now become a standard of sorts. The additional tier that was introduced handles the database management and the execution of the application.
The three tiers in such a design are the Presentation Tier, Application Tier, and Data Tier. The three tiers may be co-hosted on a single system. The three tiers are separated logically whichever system they exist on.
On three-tier client-server technology systems, the processing logic, data storage and management and user interface are developed and maintained as separate modules on different platforms.
Advantages of three-tier architecture in a client-server system are high data integrity, enhanced data security, and a database structure that is hidden from the clients, Limitations are also present in that the communication is more complex as there is an increased number of communication points.
n-Tier Architecture/Multitier Architecture
In this type of architecture, the functions such as presentation, running of the application and data management functions are physically separated. It is usually an expanded version of the three-tier architecture.
The advantage of such a system is the flexibility that it offers in terms of reusable applications and changing of only the required specific layers. However, the structure is more difficult to implement and maintain.
Advantages of Client-Server Technology
Client-server systems are characterized by a central node or the server that services many client nodes. It is a subtype of peer-to-peer computing model. The various advantages of client-server computing are as follows:
- The data is all secured at one centralized spot, the server.
- Data can be protected easily and user authorization and authentication are easier to handle.
- The server need not be placed in a physically close location to the client. However, the data can be accessed easily.
- As each of the client nodes are independent, it is easy to relocate, replace or upgrade these nodes.
- The nodes, i.e., the server and the client nodes may be built on different platforms, yet can transfer data between themselves.
- Advanced technologies are now available that enable safe and simple UI.
- The server can work with different clients having different capabilities.
- As data storage is centralized, data updates can be easily applied and are very effective.
It is also important to understand that the server can get overloaded and there may be data congestion if all the clients simultaneously request data from the server. Moreover, in case of failure of the server, none of the clients can request data from the server and the entire network can come to a standstill. The cost of setting up a client-server architecture model is on the higher side.
Scheduling Implementation in Client-Server Technology
Scheduling and its management is a major issue in logistics control and planning. OR and AI solutions have been sought to overcome logistics’ scheduling problems. Interactive scheduling systems have also become popular in logistics applications. With the advent of IT, scheduling problems in this field are expected to be solved by using systems with configurable and interactive support on the Internet. These systems will work to synchronize operations and increase the responsiveness.
Most SaaS systems implement client-server architectures in which several servers run on distributed grid resources. These are commonly been given the name Network-enabled servers. This kind of situation presents a multi-server multi-client scenario. A majority of the requests that the server receives are computationally intensive in this case. The Bricks simulation framework is extensively used in such cases for implementing scheduling strategies in NES systems.
The deadline scheduling systems are also accompanied by fall-back and load correction mechanisms and appropriate ones are chosen for specific multi-server multi-client NES systems.
Components of a Scheduling System
Any scheduling system has three major components made up of the user interface, scheduling engine, and the database. The UI supports I/O and editing functions graphically.
The scheduling engine is in charge of the decision process related to scheduling. The decision is taken based on methodologies based on AI, OR or hybrid techniques that combine the two.
The database enables data storage as well as its manipulation. The database by itself is made up of rules, data structures which are organized and objects.
One of the main objects is a process manager that is used to control process objects containing information about processing constraints, machine environment, the job information, etc.
The second important object is the schedule manager is used to manage individual schedule objects that contain information about the schedules.
The scheduling system also contains a very important schedule generator module that is made up of four objects, namely:
- The pre-processor which analyses data that is input
- Algorithm library which contains many algorithmic procedures
- Algorithm generator which allows the user to create new algorithms by combining the existing ones in the library, and
- Scheduler-Dispatcher that executes the algorithm from the generator object
Internet Scheduling Systems
Internet scheduling systems are set up in a manner similar to interactive scheduling systems but are strongly distributed systems. As a result of scheduling servers on the Internet, there are a few advantages. They are:
- The I/O interfaces can be supported by the local hosts to enhance the displays.
- The local clients and scheduling servers can together work the data storage to reduce the workload on the server-side and distribute the load to the local clients.
- The presence of extra scheduling servers can solve complicated scheduling problems.
In the context of complex real-life situations, it is important to understand that though many different types of scheduling applications have been developed, these are suitable only for very specific cases.