Client-Server Architecture

Jakob Jenkov
Last update: 2014-10-31

Client / server architecture is also called 2-tier architecture. A client is talking to a server which performs some services on behalf of the client.

Client / server architecure.

Common examples of client / server communication is:

  • Desktop application to database server communication
  • Browser to web server communication.
  • Mobile to server communication.
  • FTP client to FTP server communication.

2-Tier Architecture Disadvantages

In the early days of client / server applications, desktop application to database server communication was a normal use case. Most of the business logic was embedded inside the desktop application. Therefore this style of client / server applications were also called "fat client applications". Fat client applications are illustrated simply here:

Desktop applications communicating with a database server.

Embedding all the business logic of a client / server application inside the client applications has some disadvantages. First of all, it results in potential race conditions (parallelization problem) when two desktop applications attempts to update the database at the same time. If two applications read a record, update it, and save it again at the same time, which version of the updated record will be saved in the database?

Another problem with fat client applications is that the client application has to be installed on each client machine. Back in the day that had to be done manually, but today automatic installation systems exist that can install applications on desktop computers. That way applications (including updates) can be administered centrally.

The disadvantages of 2-tier fat client applications is what made software developers move to 3-tier and n-tier architecture.

Jakob Jenkov

Featured Videos

Java ForkJoinPool

P2P Networks Introduction


Java Persistence
Close TOC
All Tutorial Trails
All Trails
Table of contents (TOC) for this tutorial trail
Trail TOC
Table of contents (TOC) for this tutorial
Page TOC
Previous tutorial in this tutorial trail
Next tutorial in this tutorial trail