A rich client is software that implements application-specific functionality such as the user interface (presentation) and the logic of the applications directly at the client, for example in desktop applications or on mobile platforms. Furthermore, fat clients and thin clients must be distinguished in this context. Rich clients are sometimes also referred to as smart clients and offer the best possible performance and scaling of applications.
A rich client consists of a GUI application and integrates to it:
- The presentation i.e. the provision of an interactive interface to the user by the application.
- The application logic, which provides the actual functionality of an application.
The following characteristics can be assigned to a rich client:
Native widgets are supported, drag-and-drop functions are possible, independence from a platform, uniform component model or update functionalities are integrated.
Since the Rich Client contains specific code of the application, there is in consequence also no neutral solution as standard for a Rich Client. The definition goes a step further here, and combines cross-application functions in a framework, which is then referred to as a rich client platform. For a better understanding of the context, the terms fat client and thin client are also explained here from the point of view of software engineering, and then their differences from the rich client are briefly highlighted.
Thin Client. Is the exact opposite of a rich client. A thin client does not contain any application-specific functionality of its own; this is provided entirely by the server. The application-specific functions are presented here in the form of web pages. Due to the limited visualization and interaction of the graphical user interfaces (GUI), this is also referred to as poor usability of a thin client. Here, for example, the client is part of the browser window or drag-and-drop functions are not supported. A significant disadvantage is that other software installed on the client is difficult to integrate. However, this is offset by the ease with which new applications can be distributed and installed and the independence of the thin client from specific platforms.
Fat Client. Here, both the functionality of the presentation and that of the application logic lies with the client. This guarantees the client not only a high level of comfort for the user but also a low dependence on a network due to the offline capability. The good usability is offset by a higher effort for updating and installing new versions of the application. Fat clients support monolithic structures and are often independent of a platform.
While the differences between rich clients and thin clients are obvious, there are overlaps in the characteristics of rich clients and fat clients. One common feature is certainly usability and often a fat client is just as independent of a platform as the rich client. Differences become clear when installing new versions of an application - a rich client has an integrated update functionality. In general, the above framework also makes an application more extensible and rich clients are often frontends for server applications. A rich client, unlike a fat client, is based on a component model and many generally useful components are already implemented.