Reusable Asset: Client-Server Pattern
The client-server pattern is a distributed application structure in computing that partitions workloads between the providers of a resource or service, called servers, and service requesters, called clients.
Main Description

Introduction

The client-server pattern is a distributed application structure in computing that partitions workloads between the providers of a resource or service, called servers, and service requesters, called clients. It has been in use for many years and works well within the defined context. Also see: Wikipedia.

Problem Description

Multiple users need to access common information and common applications. The information and accesses need to be controlled, and the maintenance of the information and applications is a large factor in the operation of the system. Security aspects are also an important part of the problem.

Applicable Context

This pattern is best applied in support of a cohesive end-to-end process that invokes one or more applications and information sources that all users need to use and access. The applications and information are important and access and usage needs to be controlled.

Pattern Constraints

This pattern is not applicable if the application or the information cannot be centralized on a server. The scalability of the applications and information access needs to be examined and managed, since this may be an issue if growth is expected. Also, since the information and application is centralized on a server, reliability may be impacted unless the solution is carefully designed and deployed.

Pattern Solution

The client-server architecture typically has a graphical desktop application that communicates with a server containing much of the business logic and the data. The business logical may be in the form of stored procedures or an application or both. The client-server pattern may include one or more servers. The client initiates one or more requests (typically through a graphical user interface), waits for replies, and displays the replies on receipt. Security aspects on the server authenticates user access and provides the functions and data desired. A large range of protocols and data formats may be used to communicate this information to the client.

Client-Server Pattern

The client may simple be a web browser, with the browser-based programs operating over the Internet or the corporate Intranet. Client-based applications are also used to provide the client-side functionality.

Related Patterns

Other variations and related patterns to the client-server pattern are:

  • Distributed Computing Pattern - a system in which peer components, located on distributed and networked computers coordinate their activity through the passing of messages.

Distributed Computing 

  • N-Tier Pattern - multi-tier architecture (often referred to as n-tier architecture) is a variation of client-server architecture where the presentation, application processing, and data services are separated.

N-Tier

  • Peer-to-peer Architectural Pattern - a distributed network architecture in which individual nodes (peers) in the network are both suppliers and consumers of services and resources.

Peer-to-Peer