client-server system
client-server system
[¦klī·ənt ′sər·vər ‚sis·təm]Client-server system
A computing system that is composed of two logical parts: a server, which provides services, and a client, which requests them. The two parts can run on separate machines on a network, allowing users to access powerful server resources from their personal computers. See Local-area networks, Wide-area networks
Client-server systems are not limited to traditional computers. An example is an automated teller machine (ATM) network. Customers typically use ATMs as clients to interface to a server that manages all of the accounts for a bank. This server may in turn work with servers of other banks (such as when withdrawing money at a bank at which the user does not have an account). The ATMs provide a user interface and the servers provide services, such as checking on account balances and transferring money between accounts.
To provide access to servers not running on the same machine as the client, middleware is usually used. Middleware serves as the networking between the components of a client-server system; it must be run on both the client and the server. It provides everything required to get a request from a client to a server and to get the server's response back to the client. Middleware often facilitates communication between different types of computer systems. This communication provides cross-platform client-server computing and allows many types of clients to access the same data.
The server portion almost always holds the data, and the client is nearly always responsible for the user interface. The application logic, which determines how the data should be acted on, can be distributed between the client and the server. The part of a system with a disproportionately large amount of application logic is termed “fat”; a “thin” portion of a system is a part with less responsibility delegated to it. Fat server systems, such as groupware systems and web servers, delegate more responsibility for the application logic to the server, whereas fat client systems, such as most database systems, place more responsibility on the client. See Human-computer interaction
The canonical client-server model assumes two participants in the system. This is called a two-tiered system; the application logic must be in the client or the server, or shared between the two. It is also possible to have the application logic reside in a third layer separate from the user interface and the data, turning the system into a three-tier system. Complete separation is rare in actual systems; usually the bulk of the application logic is in the middle tier, but select portions of it are the responsibility of the client or the server.
The three-tier model is more flexible than the two-tier model because the separation of the application logic from the client and the server gives application logic processes a new level of autonomy. The processes become more robust since they can operate independently of the clients and servers. Furthermore, decoupling the application logic from the data allows data from multiple sources to be used in a single transaction without a breakdown in the client-server model. This advancement in client-server architecture is largely responsible for the notion of distributed data. See Distributed systems (computers)
Standard web applications are the most common examples of three-tier systems. The first tier is the user interface, provided via interpretation of Hyper Text Markup Language (HTML) by a web browser. The embedded components being displayed by the browser reside in the middle tier, and provide the application logic pertinent to the system. The final tier is the data from a web server. Quite often this is a database-style system, but it could be a data-warehousing or groupware system.