Client/Server is a scalable architecture, whereby each computer or process on
the network is either a client or a server. Server software generally, but not
always, runs on powerful computers dedicated for exclusive use to running the
business application. Client software on the other hand generally runs on common
PCs or workstations. Clients get all or most of their information and rely on
the application server for things such as configuration files, stock quotes,
business application programs, or to offload compute-intensive application tasks
back to the server in order to keep the client computer (and client computer
user) free to perform other tasks.
Properties of a server:
Servers can be stateless or stateful. A stateless server does not keep any
information between requests. Example: An HTTP server for static HTML pages. A
stateful server can remember information between requests. The scope of this
information can be global or session. Example: Apache Tomcat.
The interaction between client and server is often described using sequence
diagrams. Sequence diagrams are standardized in the UML.
Another type of network architecture is known as a peer-to-peer architecture
because each node or instance of the program is both a "client" and a "server"
and each has equivalent responsibilities. Both client/server and peer-to-peer
architectures are in wide use.