Actions

Client Server Architecture

What is Client Server Architecture?

Client Server Architecture is a computing model in which the server hosts, delivers, and manages most of the resources and services to be consumed by the client. This type of architecture has one or more client computers connected to a central server over a network or internet connection. This system shares computing resources. Client/server architecture is also known as a networking computing model or client/server network because all the requests and services are delivered over a network.[1]



Client Server Architecture
Client Server Architecture
Figure 1. source: Practice


Client-server architecture is an architecture of a computer network in which many clients (remote processors) request and receive service from a centralized server (host computer). Client computers provide an interface to allow a computer user to request services of the server and to display the results the server returns. Servers wait for requests to arrive from clients and then respond to them. Ideally, a server provides a standardized transparent interface to clients so that clients need not be aware of the specifics of the system (i.e., the hardware and software) that is providing the service. Clients are often situated at workstations or on personal computers, while servers are located elsewhere on the network, usually on more powerful machines. This computing model is especially effective when clients and the server each have distinct tasks that they routinely perform. In hospital data processing, for example, a client computer can be running an application program for entering patient information while the server computer is running another program that manages the database in which the information is permanently stored. Many clients can access the server’s information simultaneously, and, at the same time, a client computer can perform other tasks, such as sending e-mail. Because both client and server computers are considered intelligent devices, the client-server model is completely different from the old “mainframe” model, in which a centralized mainframe computer performed all the tasks for its associated “dumb” terminals.[2]


The Purpose of Client/Server Architecture[3]

We are in an era where information technology plays a critical role in business applications, considered as an area an organization would highly invest in order to widen the opportunities available to compete the global market. “A competitive global economy will ensure obsolescence and obscurity to those who cannot or are unwilling to compete”(Client/Server Architecture,2011), according to this statement it’s necessary for organizations sustain its market position by reengineering prevailing organizational structures and business practices to achieve their business goals. In short it’s a basic need to evolve with the change of technological aspects. Therefore organizations should undergo a mechanism to retrieve and process its corporate data to make business procedures more efficient to excel or to survive in the global market. The client/server model brings out a logical perspective of distributed corporative processing where a server handles and processes all client requests. This can be also viewed as a revolutionary milestone to the data processing industry. “Client/server computing is the most effective source for the tools that empower employees with authority and responsibility.”(Client/Server Architecture,2011) “Workstation power, workgroup empowerment, preservation of existing investments, remote network management, and market-driven business are the forces creating the need for client/server computing”. (Client/Server Architecture,2011) Client/server computing has a vast progression in the computer industry leaving any area or corner untouched. Often hybrid skills are required for the development of client/server applications including database design, transaction processing, communication skills, graphical user interface design and development etc. Advanced applications require expertise of distributed objects and component infrastructures. Most commonly found client/server strategy today is PC LAN implementation optimized for the usage of group/batch. This has basically given threshold to many new distributed enterprises as it eliminates host-centric computing.


Characteristics of a Client-Server Architecture[4]

  • Client and server machines need different amount of hardware and software resources.
  • Client and server machines may belong to different vendors.
  • Horizontal scalability (increase of the client machines) and vertical scalability (migration to a more powerful server or to a multi-server solution)
  • A client or server application interacts directly with a transport layer protocol to establish communication and to send or receive information.
  • The transport protocol then uses lower layer protocols to send or receive individual messages. Thus, a computer needs a complete stack of protocols to run either a client or a server.
  • A single server-class computer can offer multiple services at the same time; a separate server program is needed for each service.


Three-tier Client Server Architecture (See Figure 2.) [5]

The traditional client/server architecture involves two levels, a client level and a server level. Another common design of client/server systems uses three tiers:

  • A client that interacts with the user
  • An application server that contains the business logic of the application
  • A resource manager that stores data


Three Tier Client Server Architecture
Figure 2 source: IBM


Client Server Vs. Peer to Peer (See Figure 3.) [6]

The main difference between client-server and peer to peer systems is that in the client-server architecture, there are designated clients that request for services and servers that provide services, but in peer to peer systems, peers act as both service providers and service consumers. Further, client-server systems require central file server and they are expensive to implement than peer to peer systems. On the other hand, in the client-server system, a dedicated file server provides level of access to the clients, providing better security than peer to peer systems where security is handled by the end users. Further, peer to peer networks suffer in performance as the number of nodes increase, but client-server systems are more stable and could be scaled as much as you need. Therefore, selecting one over the other is dependent on the environment that you need to implement.

The Figure 3 depicts client server architecture model in two different modes or types. There are different types of architectures based on client server model viz. distributed, peer to peer etc.

  • In distributed architecture, one or more dedicated machines are used only as server while all the other machines are used as clients. In this scenario, clients can communicate via server.
  • In this mode, client initiates communications.
  • Client issues request to a server.
  • Server replies or performs some service.
  • In peer to peer architecture, Each of the host or instance of application program can function as both client and server simultaneously. Both of them has equivalent responsibilities and status.
  • In this mode, any participant can initiate communication.
  • Any device can generate a request.
  • Any device may provide a response.


Client Server Architecture Modes
Figure 3. source: RF Wireless World


Advantages and Disadvantages of the Client Server Architecture[7]

  • Advantages: Organizations often seek opportunities to maintain service and quality competition to sustain its market position with the help of technology where the client/server model makes an effective impact. Deployment of client/server computing in an organization will positively increase productivity through the usage of cost-effective user interfaces, enhanced data storage, vast connectivity and reliable application services. If properly implemented its capable of improving organizational behavior with the help of the knowledgeable worker-who can manipulate data and respond to the errors appropriately.
    • Improved Data Sharing: Data is retained by usual business processes and manipulated on a server is available for designated users (clients) over an authorized access. The use of Structured Query Language (SQL) supports open access from all client aspects and also transparency in network services depict that similar data is being shared among users.
    • Integration of Services: Every client is given the opportunity to access corporate information via the desktop interface eliminating the necessity to log into a terminal mode or another processor. Desktop tools like spreadsheet, power point presentations etc. can be used to deal with corporate data with the help of database and application servers resident on the network to produce meaningful information.
    • Shared Resources amongst Different Platforms: Applications used for client/server model is built regardless of the hardware platform or technical background of the entitled software (Operating System S/W) providing an open computing environment, enforcing users to obtain the services of clients and servers (database, application, communication servers).
    • Inter-Operation of Data: All development tools used for client/server applications access the back-end database server through SQL, an industry-standard data definition and access language, helpful for consistent management of corporate data. Advanced database products enable user/application to gain a merged view of corporate data dispersed over several platforms. Rather than a single target platform this ensures database integrity with the ability to perform updates on multiple locations enforcing quality recital and recovery.
    • Data Processing capability despite the location: We are in an era which undergoes a transformation of machine-centered systems to user-centered systems. Machine-centered systems like mainframe, mini-micro applications had unique access platforms and functionality keys, navigation options, performance and security were all visible. Through client/server users can directly log into a system despite of the location or technology of the processors.
    • Easy maintenance: Since client/server architecture is a distributed model representing dispersed responsibilities among independent computers integrated across a network, it’s an advantage in terms of maintenance. It’s easy to replace, repair, upgrade and relocate a server while clients remain unaffected. This unawareness of change is called as encapsulation.
    • Security: Servers have better control access and resources to ensure that only authorized clients can access or manipulate data and server-updates are administered effectively.
  • Disadvantages (compared to peer-peer networks)
    • Overloaded servers: When there are frequent simultaneous client requests, servers severely get overloaded, forming traffic congestion. But in a P2P network adding more nodes will increase its bandwidth since it’s calculated as the sum of bandwidths of each node in the network.(slideshare 2011)
    • Impact of centralized architecture: Since its centralized if a critical server fails, client requests are not accomplished. Therefore client/server lacks robustness of a good P2P network (resources are distributed among many nodes).

Client Server Architecture's Relationship with Distributed Computing

Client-server architecture and distributed computing are related concepts as they both involve using multiple computers or devices to perform tasks or provide services. However, they differ in terms of their structure, design principles, and implementation. Client-server architecture is a centralized computing model where the server handles most processing and data storage tasks. In contrast, distributed computing is a decentralized model that leverages the combined resources of multiple interconnected computers. Both approaches have their advantages and can be used together or separately, depending on the specific requirements and goals of a given system.

Client-server architecture is a computing model where the system is divided into two main components: the client and the server. The client is typically a user-facing device, such as a computer or mobile device, which requests services or resources from the server. The server, on the other hand, is a powerful computer or a group of computers that processes client requests, manages resources, and delivers the requested services or data back to the client.

In a client-server architecture, the server often handles most of the processing and data storage, while the client mainly serves as an interface for users to interact with the system. This centralized approach allows for easier management of resources and data, but can also create a single point of failure and potential performance bottlenecks.

Distributed computing, on the other hand, is a computing model where multiple interconnected computers or devices work together to perform tasks or provide services. In this model, the processing power, memory, and storage are spread across multiple systems, and tasks are divided into smaller subtasks that are processed concurrently by different computers in the network.

Distributed computing aims to improve the efficiency, reliability, and scalability of systems by leveraging the combined resources of multiple devices. This decentralized approach can help overcome the limitations of single systems, reduce the risk of single points of failure, and enable more robust and fault-tolerant solutions.

The relationship between client-server architecture and distributed computing can be seen as complementary. In some cases, distributed computing can be applied within the context of a client-server architecture. For example, a system can be designed with multiple servers that are part of a distributed computing network, providing services to clients. This combination can help improve the overall performance, reliability, and scalability of the system.

In other cases, distributed computing can serve as an alternative to the traditional client-server model, particularly in situations where decentralization, fault tolerance, and the ability to scale are of utmost importance.

See Also


References


Further Reading