Application architecture determines which hardware performs each of the four basic functions of an application: data storage, data access logic, application logic, and presentation logic. There are three main types of application architecture that are used today: server-based, client-based, and client-server architecture. Client-server architecture is considered to be the most common and provides the most advantages for both clients and developers.
In server-based architecture, the server performs all four functions, and clients only send and receive messages to and from the server computer. In client-based architecture, the client is in charge of the data access, presentation, and application logic, and the server only stores the data. In a client-server architecture, the functions are balanced between the client and the server. Data storage and data access are performed by the server; the client is performing the application logic tasks, and the presentation logic is divided between both.
The main advantage of server-based and client-based architectures is simplicity. In server-based systems, the data is both stored and processed by the server, and in client-based architecture, it is stored on the server and processed solely by the client. The main disadvantage is that such systems are prone to overload. In the first case, servers often become unable to process all the users’ commands, while in the second case, the client computers do not always have enough power to perform all the data processing. Both server-based and client-based architectures often fail to meet the growing application demands.
Client-server architecture solves the overload problem by splitting the functions between the client and the server. It allows IT workers to increase and decrease the storage and processing capabilities of the servers and upgrade the application gradually. It also makes the system more flexible and allows it to meet varying users’ demands. The main disadvantage of this type of architecture is its complexity, which makes it difficult for developers to quickly upgrade the system. However, it still remains the most reliable and balanced type of architecture, widely used for different kinds of applications.