client-server

term

networkingprogramming

An architecture where requesting clients talk to a designated server that holds the resource and answers.

The asymmetry is the whole design: the server is always listening, is addressable and administered, and the client initiates. That centralization is what makes access control, backup, and auditing tractable, and it is why nearly every enterprise protocol, HTTP, LDAP, SMTP, SQL, works this way. The cost is that the server is both the bottleneck and the target.

Client-server splits an application between a requester and a provider, with the server holding the shared state and enforcing the rules. It is the dominant model because centralizing authority makes consistency, access control and auditing tractable.

Its properties follow from that centralization. The server is a single point of failure and a single point of trust, scaling means making it bigger or making many of them agree, and every client depends on its availability. The alternative pushes work and trust to the edges and gets resilience at the cost of consistency, which is why almost every real system is a hybrid: peer-to-peer distribution of bulk data, client-server for the decisions about it.

Also known as: client/server, client server model

All glossary entries